我需要重复使用TestCase,因此我创建了一个私有字段" role"在我的测试用例中:
public class ATest extends TestCase {
private String role;
public void setRole(String userName) {
role = userName;
}
@Test
public void method1(){
System.out.println("role:"+role);
}
现在我想创建一个包含多个测试用例的套件,使用相同的" ATest"类:
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite(AllTests.class.getName());
//CASE 1: Works fine
suite.addTestSuite(ATest.class);
//CASE 2: Doesn't work fName is null
ATest aTest = new ATest();
aTest.setRole("Admin");
suite.addTest(aTest);
//CASE 3: works but ugly
ATest aTest2 = new ATest();
aTest2.setName(aTest2.getClass().getMethods()[1].getName());
aTest2.setRole("AnotherUser");
suite.addTest(aTest2);
return suite;
}
}
CASE 1是添加测试用例最明显的方法,但不能设置我的私有字段。 CASE 2是我想要做的但是没有用,因为我的测试的属性fName是null(我在Eclipse中使用调试透视图看到它)。最后一种情况CASE 3似乎有效,但我不想使用这种方法。
有没有更优雅和简单的方法来重用相同的测试用例? 感谢
答案 0 :(得分:1)
你不需要套件。您可以为此
使用参数化类@RunWith(Parameterized.class)
public class ATest { //with JUnit4, no need to extend from something
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "firstRole" }, { "SecondRole" }, { "ThirdRole" }
});
}
private final String role;
public ATest(String role) {
this.role = role;
}
@Test
public void test() {
System.out.println("role:"+role);
}
}
有关参数化测试的更多信息,请参阅JUnit wiki。