是否可以从我的 Java 应用程序中运行 JUnit 测试?
是否有我可以使用的测试框架(例如 JUnit.jar?),还是我必须自己查找测试文件、调用方法并跟踪异常?
我问的原因是我的应用程序需要大量工作才能启动(大量依赖项和配置等),并且使用外部测试工具(如 JUnit Ant 任务)需要大量工作准备工作。
更容易启动应用程序,然后在应用程序内部运行我的测试。
是否有一个简单的测试框架可以从 Java 应用程序内部运行测试并输出结果,还是我被迫编写自己的框架?
如何从我的 Java 应用程序中运行 JUnit 测试?
最佳答案
是的,你可以。我做了几次在生产系统中运行诊断/冒烟测试。这是调用 JUnit 的代码的关键部分的片段:
JUnitCore junit = new JUnitCore();
Result result = junit.run(testClasses);
不要在应用程序中使用 JUnit.main
,它会在测试完成后调用 System.exit
,因此它可能会停止 JVM过程。
您可能想要捕获 JUnit 的“常规”控制台输出(点和简单报告)。这可以通过注册 TextListener
轻松完成(这个类提供了这个简单的报告)。
还请注意使用这种方法的一些并发症:
任何“测试框架”的测试,包括这么小的一个,虽然很简单,但可能会让人困惑。例如,如果您想在其中一个测试失败时测试“测试框架”是否返回失败结果,您可以(应该?)创建始终失败的示例 JUnit 测试并使用“测试框架”执行该测试。在这种情况下,失败的测试用例实际上是测试数据,不应作为“正常”JUnit 执行。有关此类测试的示例,您可以引用 JUnit 的内部测试用例。
如果您想准备/显示您的自定义报告,您应该注册自己的
RunListener
,因为 JUnit 返回的结果不包含(直接)有关已通过测试和测试方法的信息(它只是“硬编码”作为测试Description
的一部分)。
关于java - 如何从我的 Java 应用程序内部运行 JUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2543912/