我在项目中发现了一些奇怪的东西。我使用JUnit创建一个测试类来测试我的服务层。服务层本身不是我的问题。我的问题是,我不知道为什么在我的第一个测试方法中为一个int变量赋值后,然后当我尝试在第二个测试方法中使用该值时,变量值为{{1} }
因为我使用0
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
我也尝试将int id;
@Test
public void firstMethodToTest() {
id = 10;
System.out.println(id); // here printed correctly 10
}
@Test
public void secondMethodToTest() {
System.out.println(id); // here printed 0
}
更改为int
,但它不再返回Integer
而不是null
。
我想知道在这样的JUnit Test类中,Java变量的行为是否不同。
感谢。
答案 0 :(得分:2)
感谢@Ivan给我一个答案的线索
对于每个测试方法(使用@Test
注释的方法),将创建一个新的YourTestClass实例。这是Junit的行为。
因此,重点是如果要对所有测试方法使用类成员,只需将变量声明为static即可。就我而言:static int id;