gpt4 book ai didi

java - 手动实例化 TestCase 并将其添加到 JUnit 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:46 25 4
gpt4 key购买 nike

我需要重用测试用例,因此我在测试用例中创建了一个私有(private)字段“角色”:

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;
}
}

案例 1 是添加测试用例的最明显方法,但无法设置我的私有(private)字段。 CASE 2 是我想做的,但不起作用,因为我的测试的属性 fName 为 null(我在 Eclipse 中使用调试视角看到它)。最后一种情况 CASE 3 似乎可行,但我不想使用这种方法。

有没有更优雅、更简单的方法来重用相同的测试用例?谢谢

最佳答案

您不需要为此使用套件。您可以为此使用参数化类

@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有关参数化测试的更多信息。

关于java - 手动实例化 TestCase 并将其添加到 JUnit 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26553307/

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