Spring 3+当JUnit无法识别时,如何创建TestSuite

时间:2010-09-11 14:36:05

标签: spring junit testing suite

我正在使用Spring 3.0.4和JUnit 4.5。我的测试类目前使用Spring的注释测试支持,语法如下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration (locations = { "classpath:configTest.xml" })
@TransactionConfiguration (transactionManager = "txManager", defaultRollback = true)
@Transactional
public class MyAppTest extends TestCase 

{
 @Autowired
 @Qualifier("myAppDAO")
 private IAppDao appDAO;
    ...
}

我真的不需要行 extends TestCase 来运行此测试。单独运行此测试类时不需要它。我必须添加 extends TestCase ,以便我可以在TestSuite类中添加它:

public static Test suite() {
        TestSuite suite = new TestSuite("Test for app.dao");
  //$JUnit-BEGIN$
  suite.addTestSuite(MyAppTest.class);
        ...

如果我省略 extends TestCase ,我的测试套件将无法运行。 Eclipse会将 suite.addTestSuite(MyAppTest.class)标记为错误。

如何将Spring 3+测试类添加到测试套件中?我相信有更好的方法。我是GOOGLED并阅读文档。如果你不相信我,我愿意把你所有的书签作为证据发给你。但无论如何,我更愿意提出建设性的答案。非常感谢。

1 个答案:

答案 0 :(得分:6)

你是对的; JUnit4样式的测试不应该扩展junit.framework.TestCase

您可以通过这种方式将JUnit4测试作为JUnit3套件的一部分包含在内:

public static Test suite() {
   return new JUnit4TestAdapter(MyAppTest.class);
}

通常您会将此方法添加到MyAppTest类。然后,您可以将此测试添加到更大的套件中:

 public class AllTests {
   public static Test suite() {
     TestSuite suite = new TestSuite("AllTests");
     suite.addTest(MyAppTest.suite());
     ...
     return suite;
   }
}

您可以通过创建使用Suite注释的类来创建JUnit4样式的套件

@RunWith(Suite.class)
@SuiteClasses( { AccountTest.class, MyAppTest.class })
public class SpringTests {}

请注意,AccountTest可以是JUnit4样式的测试或JUnit3样式的测试。