是否可以从我的 Java 应用程序内部运行 JUnit 测试?
是否有我可以使用的测试框架(例如 JUnit.jar?),或者我是否强制自己查找测试文件、调用方法并跟踪异常?
我问的原因是我的应用程序需要大量工作才能启动(大量依赖项和配置等),并且使用外部测试工具(如 JUnit Ant 任务)需要大量工作来设置。
启动应用程序然后在应用程序内部运行我的测试会更容易。
是否有一个简单的测试框架可以从 Java 应用程序内部运行测试并输出结果,或者我是否被迫编写自己的框架?
如何从我的 Java 应用程序内部运行 JUnit 测试?
原文由 corgrath 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的你可以。我做了几次在生产系统中运行诊断/冒烟测试。这是调用 JUnit 的代码关键部分的片段:
不要在您的应用程序中使用
JUnit.main
,它会在测试完成后调用System.exit
,因此它可能会停止JVM进程。您可能想要捕获 JUnit 的“常规”控制台输出(点和简单报告)。这可以通过注册
TextListener
轻松完成(此类提供此简单报告)。还请注意使用这种方法的一些并发症:
测试任何“测试框架”,包括这么小的框架,虽然非常简单,但可能会造成混淆。例如,如果您想测试当其中一个测试失败时您的“测试框架”是否返回失败结果,您可以(应该?)创建始终失败的示例 JUnit 测试并使用“测试框架”执行该测试。在这种情况下,失败的测试用例实际上是测试数据,不应作为“正常”JUnit 执行。有关此类测试的示例,您可以参考 JUnit 的内部测试用例。
如果你想准备/显示你的自定义报告,你应该注册你自己的
RunListener
,因为 JUnit 返回的结果不包含(直接)关于通过的测试和测试方法的信息(它只是“硬编码”作为测试的一部分Description
)。