Java Junit动态创建的测试不工作

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

公共类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 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或更高版本)那么你应该这么做。参数化测试绝对是你的答案。