gpt4 book ai didi

java - AtomicInteger 在 JUnit 测试中不会增加

转载 作者:行者123 更新时间:2023-12-01 07:47:10 25 4
gpt4 key购买 nike

我有以下 JUnit 测试,但无法弄清楚为什么第二个测试没有通过,两个测试中 i 的值都是 1。

public class TestTest {

private AtomicInteger ai = new AtomicInteger(1);

@Test
public void test1() {
int i = ai.getAndIncrement();
Assert.assertEquals(1, i);
}

@Test
public void test2() {
int i = ai.getAndIncrement();
Assert.assertEquals(2, i);
}
}

test1 通过,test2 失败并显示以下消息:

java.lang.AssertionError: 
Expected :2
Actual :1

最佳答案

测试在新实例上运行。 test1() 的行为不能以任何方式影响 test2(),否则可能会导致单个失败的测试导致其后的所有其他测试失败。这会让查明问题的根源变得更加困难,而您不希望这样。

如果您想测试多个调用之间的行为,您需要创建一个测试,将这两个方法作为一个单元一起调用,或者继续进行集成测试,您可以在其中测试大量代码是否正确工作.

您的测试在逻辑上也是错误的,因为您正在减少该值。您(错误的)期望值将是 0 而不是 2

关于java - AtomicInteger 在 JUnit 测试中不会增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49251258/

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