gpt4 book ai didi

java - 如何控制 JUnit 是否创建正在测试其行为的类的实例?

转载 作者:行者123 更新时间:2023-11-30 05:56:51 24 4
gpt4 key购买 nike

我注意到 JUnit 隐式创建了我的测试类的实例。我已将自己的调用添加到构造函数中,这不会阻止 JUnit 创建实例;最终结果是创建了两个实例,如下面的控制台输出所示。我觉得这令人费解。为什么会发生这种情况?如何控制/阻止 JUnit 创建实例?谷歌搜索“junit隐式对象创建”没有显示任何内容,但我能够通过调试测试来查看构造函数的调用位置。我不明白的是为什么会发生这种情况,当我们自己有地方做的时候,以及如何防止它发生。我在 eclipse photon 中使用 JUnit 4。谢谢。

public class MainTest extends Main {

static Main m;

@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("setUpBeforeClass");
m = new Main();

}

@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("tearDownAfterClass");
}

@Before
public void setUp() throws Exception {
System.out.println("setup");
}

@After
public void tearDown() throws Exception {
System.out.println("tearDown");
}

@Test
public void testAdd() {
assertEquals(8,m.add(3,5));
}

}

控制台输出:

setUpBeforeClass
Main()
Main()
setup
tearDown
tearDownAfterClass

最佳答案

您的测试用例扩展了 Main 类,这意味着在创建 MainTest 类和显式调用 new Main() 时调用构造函数删除 extends Main 就可以了

关于java - 如何控制 JUnit 是否创建正在测试其行为的类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53020412/

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