unit-testing - 从另一个 JUnit 测试类运行 JUnit 测试类

标签 unit-testing junit junit4 test-suite

我有两个正在测试的类(我们称它们为 ClassA 和 ClassB)。每个都有自己的 JUnit 测试类(分别为 testClassA 和 testClassB)。

ClassA 的正常功能依赖于 ClassB,因此我想确保 ClassB 在运行 testClassA 之前通过其测试(否则 testClassA 的结果将毫无意义)。

做这个的最好方式是什么?在这种情况下,它用于作业,因此如果可能,我需要将其保留在两个指定的测试类中。

如果 testClassB 的测试没有全部通过,我可以/应该从 testClassA 抛出异常吗?这将需要 testClassB 以不可见的方式运行,并且只向 testClassA 报告其成功/失败,而不是向 GUI(通过 JUnit)报告。

我正在使用 Eclipse 和 JUnit 4.8.1

更新:到目前为止,我管理的最好的是带有测试套件的单独文件,如下所示。这仍然不是我所追求的,因为如果 ClassA 未通过某些测试,它仍然允许运行 ClassB 测试。

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({testClassA.class, testClassBCode.class})
public class testClassB {
}

最佳答案

您的单元测试不应依赖于其他测试。

您的问题的一种解决方案是在 ClassA 的测试中模拟 ClassB,以便独立于 ClassB 的测试结果测试其行为。

我建议你给 mockito一试!

关于unit-testing - 从另一个 JUnit 测试类运行 JUnit 测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2489927/

相关文章:

java - 测试字符串 Junit

java - 为什么我在这里收到 InvalidUseOfMatchers 构建错误?

java - 如何模拟静态变量,该变量是通过对该静态变量的静态方法调用来初始化的

unit-testing - 运行单个Grails单元/集成测试将在Intellij上运行所有测试

unit-testing - 向遗留代码添加单元测试

java - 如何对调用 Jersey 客户端 API 的代码进行单元测试?

java - 如何使用 @Transactional 方法将 jmockit 的模拟对象注入(inject)到 spring 管理的对象中?

java - 避免运行生成超长命令行的 java 测试时出现错误?

java - 如何忽略测试方法缺少@throws 的CheckStyle 警告?

java - JUnit 4 @Test 注释报告测试名称为 "unknown"