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

标签 java testing junit

是否可以从我的 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 轻松完成(这个类提供了这个简单的报告)。

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

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

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

关于java - 如何从我的 Java 应用程序内部运行 JUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2543912/

相关文章:

java - 组织.hibernate.QueryException : Not all named parameters have been set:[]

c# - 测试数据库调用 C#

excel - 如何结束所有正在运行的excel宏和excel函数?

java - 扩展 Junit ParentRunner 类以过滤测试方法

elasticsearch - 6.2中的本地弹性节点

java - 理解概念

javascript - 设置 highchart 中 y 轴的 double 最小值和最大值

java - 如何删除Camel中的空目录?

javascript - react : How to test component's input which uses ref?

junit - PowerMock测试-设置类的静态字段