Java Junit测试夹具-初始化变量
看起来JUnit类变量有不同的作用域规则,我想这需要用测试装置来管理。这就是我想要的 我在这个测试类中有测试套件、测试类和两个方法(test1、test2),在测试类中有类变量temp,我在test1中为这个变量赋值,并希望在test2中访问这个值Java Junit测试夹具-初始化变量,java,junit4,Java,Junit4,看起来JUnit类变量有不同的作用域规则,我想这需要用测试装置来管理。这就是我想要的 我在这个测试类中有测试套件、测试类和两个方法(test1、test2),在测试类中有类变量temp,我在test1中为这个变量赋值,并希望在test2中访问这个值 @RunWith(Suite.class) @Suite.SuiteClasses( { LoginTest.cla
@RunWith(Suite.class)
@Suite.SuiteClasses(
{
LoginTest.class
})
public class SanitySuite {
@BeforeClass
public static void setUp(){
BuildTest.seleniumSetUp();
}
@AfterClass
public static void tearDown() throws Exception{
BuildTest.seleniumTearDown();
}
}
public class LoginTest{
String temp=null;
@Test
public void test1(){
temp = "abc"
}
@Test
public void test2(){
system.out.print(temp)//prints null
}
}
关于如何使用测试装置在test2中检索temp值的任何指针?jUnit中变量的工作方式是在每次测试之前初始化它们。所以,如果您在test1中指定了temp=“abc”,那么在test2运行时,它将被重新初始化。如果您想在每次测试之前进行某种初始化,请使用setup方法
对于单元测试,您的目标应该是逐个测试最小的独立代码段,通常是方法。所以在测试用例之间共享变量似乎不是一个好主意。但是如果您确实需要这样做,那么一种方法可以是将两个方法合并到一个方法中,并在第二个方法中使用第一个方法设置的变量。jUnit中变量的工作方式是在每次测试之前对其进行初始化。所以,如果您在test1中指定了temp=“abc”,那么在test2运行时,它将被重新初始化。如果您想在每次测试之前进行某种初始化,请使用setup方法
对于单元测试,您的目标应该是逐个测试最小的独立代码段,通常是方法。所以在测试用例之间共享变量似乎不是一个好主意。但是如果您确实需要这样做,那么一种方法可以是将两个方法合并到一个方法中,并在第二个方法中使用第一个方法设置的变量。大体上,JUnit不支持您的用例,这是有充分理由的:您希望测试彼此独立。因此,每个测试方法都在其on对象上运行。换句话说,当您在幕后运行测试用例时,JUnit正在执行以下操作
new LoginTest().test1();
new LoginTest().test2();
如果希望test1()和test2()都访问相同的字段(并且具有相同的值),可以在构造函数中对其进行初始化:
public class LoginTest() {
String temp;
public LoginTest() { temp = "abc"; }
@Test public void test1() { ... }
@Test public void test2() { ... }
}
您还可以使用@Before方法,该方法将在每次测试之前调用,但这相当于初始化ctor中的字段,因此它没有那么大的用处。总体而言,JUnit不支持您的用例,原因很充分:您希望测试彼此独立。因此,每个测试方法都在其on对象上运行。换句话说,当您在幕后运行测试用例时,JUnit正在执行以下操作
new LoginTest().test1();
new LoginTest().test2();
如果希望test1()和test2()都访问相同的字段(并且具有相同的值),可以在构造函数中对其进行初始化:
public class LoginTest() {
String temp;
public LoginTest() { temp = "abc"; }
@Test public void test1() { ... }
@Test public void test2() { ... }
}
您还可以使用@Before方法,该方法将在每次测试之前调用,但这相当于初始化ctor中的字段,因此它没有多大用处。使用ReflectionUtil类来分配值:
ReflectionTestUtils.setField(nameofClass, "nameOfMemberVariable","Value");
使用ReflectionUtil类指定值:
ReflectionTestUtils.setField(nameofClass, "nameOfMemberVariable","Value");