如何从我的 Java 应用程序内部运行 JUnit 测试?

新手上路,请多包涵

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

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

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

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

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

如何从我的 Java 应用程序内部运行 JUnit 测试?

原文由 corgrath 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 344
2 个回答

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

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

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

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

还请注意使用这种方法的一些并发症:

  1. 测试任何“测试框架”,包括这么小的框架,虽然非常简单,但可能会造成混淆。例如,如果您想测试当其中一个测试失败时您的“测试框架”是否返回失败结果,您可以(应该?)创建始终失败的示例 JUnit 测试并使用“测试框架”执行该测试。在这种情况下,失败的测试用例实际上是测试数据,不应作为“正常”JUnit 执行。有关此类测试的示例,您可以参考 JUnit 的内部测试用例。

  2. 如果你想准备/显示你的自定义报告,你应该注册你自己的 RunListener ,因为 JUnit 返回的结果不包含(直接)关于通过的测试和测试方法的信息(它只是“硬编码”作为测试的一部分 Description )。

原文由 kopper 发布,翻译遵循 CC BY-SA 2.5 许可协议

如 JUnit FAQ 中所述:

 public static void main(String args[]) {
  org.junit.runner.JUnitCore.main("junitfaq.SimpleTest");
}

原文由 Tomislav Nakic-Alfirevic 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题