gpt4 book ai didi

java - 用 1 个测试测试多个类

转载 作者:行者123 更新时间:2023-11-28 20:54:32 25 4
gpt4 key购买 nike

假设我有一个接口(interface),其中有 2 个类都实现了它。所以我们有接口(interface) I,有 A 类和 B 类。对于这两个类,我们需要用 JUnit4 测试相同的实现函数 doSomething()。有一些依赖关系,所以我们使用 Mockito。示例测试如下所示:

@Mock private dependantClass d;

@Test
public void test() {
A.doSomething();
verify(d).expectedBehavior();
}

我已经为 A(4 个测试)编写了测试套件,没问题。但是,现在我必须重构测试套件,以便我可以在 A 和 B 对象上执行相同的测试类。为此,我应该使用并行类层次结构。

这让我很困惑。我试过使用 @Parameters 注释,但这给了我输入参数太多的错误。我已经尝试制作一个 ATest 和 BTest 都从中扩展的 super 测试类,但我猜我做的不对,因为我得到了空指针异常。

实际上复制所有测试用例并将A更改为B即可通过所有测试,也就是说这2个类做的是一样的。我意识到这听起来像是错误的设计,老实说,它可能是。但是,我没有实际更改代码的可能性,我只需要对其进行测试。

我是不是做错了?我应该如何实现?

最佳答案

您可以尝试 JUnit 理论:

@RunWith(Theories.class)
public class AdditionWithTheoriesTest {
private dependantClass d;

@Before
public void before() {
d = mock(dependantClass);
}

@DataPoints
public static I[] positiveIntegers() {
return new I[]{
new A(d), //inject d into A, may differ
new B(d) //inject d into B, may differ
};

}

@Theory
public void test(I data) {
data.doSomething();
verify(d).expectedBehavior();
}

同样可以用 @Parameters 来完成(如果配置正确的话)。然而 @Parameters 更适合用多个数据测试一个类。 @Theories 用于在不同的参数(例如多个类)上断言相同的行为。

关于java - 用 1 个测试测试多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com