是否可以从我的Java应用程序内部运行JUnit测试?

是否有我可以使用的测试框架(例如JUnit.jar?),还是我必须自己查找测试文件,调用方法并跟踪异常?

我问的原因是我的应用程序需要大量的工作来启动启动(很多依赖项和配置等),而使用外部测试工具(例如JUnit Ant任务)将需要大量的工作来设置。

启动应用程序然后在应用程序内部运行我的测试更加容易。

是否有一个简单的测试框架可以从Java应用程序内部运行测试并输出结果,还是我不得不编写自己的框架?

最佳答案

是的你可以。我做了几次,在生产系统中运行诊断/烟雾测试。这是调用JUnit的代码的关键部分的代码片段:

JUnitCore junit = new JUnitCore();
Result result = junit.run(testClasses);

不要在应用程序内部使用JUnit.main ,它会在测试完成后调用System.exit,因此可能会停止JVM进程。

您可能想要捕获JUnit的“常规”控制台输出(点和简单报告)。可以通过注册TextListener(此类提供此简单报告)来轻松完成此操作。

还请注意使用这种方法的一些并发症:
  • 对任何“测试框架”(包括如此小的框架)的测试,虽然非常简单,但可能会造成混淆。例如,如果要测试其中一个测试失败时“测试框架”是否返回失败结果,则可以(应该?)创建始终失败的示例JUnit测试,并使用“测试框架”执行该测试。在这种情况下,失败的测试用例实际上是测试数据,不应将其作为“常规” JUnit执行。有关此类测试的示例,可以引用JUnit的内部测试用例。
  • 如果要准备/显示自定义报告,则应该注册自己的RunListener,因为JUnit返回的结果不(直接)包含有关已通过测试和测试方法的信息(作为测试的一部分,它只是“硬编码”的) Description)。
  • 07-24 09:49
    查看更多