Java Junit动态创建的测试不工作
公共类NewTest扩展了SeleneseTestCase{Java Junit动态创建的测试不工作,java,dynamic,junit,runtime,junit3,Java,Dynamic,Junit,Runtime,Junit3,公共类NewTest扩展了SeleneseTestCase{ public static Test suite() throws Exception { TestSuite suite = new TestSuite(); TestSuite s = new TestSuite("TestCase Name"); GeneratedTest t = new GeneratedTest("testName"); t.setFailure("TestCase N
public static Test suite() throws Exception
{
TestSuite suite = new TestSuite();
TestSuite s = new TestSuite("TestCase Name");
GeneratedTest t = new GeneratedTest("testName");
t.setFailure("TestCase Name: testName");
s.addTest(t);
t = new GeneratedTest("testAge");
s.addTest(t);
suite.addTest(s);
s = new TestSuite("TestCase Name2");
t = new GeneratedTest("testOOGABOOGA");
t.setFailure("TestCase Name2: testOOGABOOGA");
s.addTest(t);
suite.addTest(s);
s = new TestSuite("TestCase Name4");
t = new GeneratedTest("testName");
t.setFailure("TestCase Name4: testName");
s.addTest(t);
t = new GeneratedTest("testAge");
s.addTest(t);
suite.addTest(s);
s = new TestSuite("TestCase Name3");
t = new GeneratedTest("testName");
t.setFailure("TestCase Name3: testName");
s.addTest(t);
t = new GeneratedTest("testAge");
s.addTest(t);
suite.addTest(s);
return suite;
}
}
public class GeneratedTest extends TestCase
{
public String testFailMessage;
public GeneratedTest(String name)
{
((TestCase)this).setName(name);
}
public void runTest()
{
if (testFailMessage != null)
{
fail(testFailMessage);
}
}
public void setFailure(String msg)
{
testFailMessage = msg;
}
}
正如您所看到的(或者您可能看不到的),我正在运行时将测试添加到junit中。这一切都很好,只是它没有正确地显示它们。这里,看看我的意思:
正如您所看到的,具有相同名称的测试甚至不会显示它们已运行,但具有重复名称的最后一个测试除外,并且该测试包含来自具有相同名称的所有其他测试的错误消息
这仅仅是我的操作方式(junit3风格)的一个缺陷吗?我是否必须将其更改为使用junit4参数化来修复它?我注意到Eclipse的测试运行程序中存在类似的问题。对于JUnit 3.8风格的参数化测试,名称没有显示。切换到JUnit 4风格解决了问题
虽然这不完全是您的场景,但我认为在将测试更新到JUnit 4之前,您必须接受它。Eclipse仍然会运行测试,这一点很重要。如果您有办法切换到junit4(需要JDK5或更高版本)那么你应该这么做。参数化测试绝对是你的答案。