gpt4 book ai didi

java - 静态成员值将被带入下一次测试

转载 作者:行者123 更新时间:2023-12-02 02:32:30 25 4
gpt4 key购买 nike

我正在对如下所示的类进行单元测试

public class A {
private static String aStr = null;

public void doSomething() {
if (null == aStr) {
// do something to init aStr, and this initialized val gets cached for future calls.
aStr = some_val;
} else {
// do something else using aStr value.
}
}

现在我正在做单元测试:

public class ATest {
private A a;

@BeforeMethod
public void setup() {
a = new A();
}

@Test
public void test1() {
a.doSomething();
// assert on some_val being fetched correctly.
}

@Test
public void test2() {
a.doSomething();
// assert again for some_val

// this is where some_val fetching is not invoked at all, while debugging I
// can see that aStr is already being initialized from previous test.
}
}

我假设由于我在 @BeforeMethod 设置中重新初始化对象“a”,所以我应该为所有测试获得空值。这个假设不是正确的吗?

最佳答案

java中字段上的

static修饰符意味着该字段不属于该类的特定实例,而是属于类本身。在大多数情况下,您在运行的 JVM 中只有类的示例。因此,您创建该类的多少个对象并不重要 - 它们都将共享一个相同的静态字段。并且该字段的值相同

关于java - 静态成员值将被带入下一次测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46866838/

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