我正在使用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;
    ...
}

我真的不需要行扩展TestCase 来运行此测试。单独运行此测试类时不需要。我必须添加扩展TestCase ,以便可以将其添加到TestSuite类中:
public static Test suite() {
        TestSuite suite = new TestSuite("Test for app.dao");
  //$JUnit-BEGIN$
  suite.addTestSuite(MyAppTest.class);
        ...

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

如何将Spring 3+测试类添加到Test Suite?我敢肯定有更好的方法。我已经使用GOOGLED并阅读了文档。如果您不相信我,我愿意将您所有的书签发送给您作为证明。但是无论如何,我都希望有一个 build 性的答案。非常感谢。

最佳答案

你是对的; 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样式的测试。

10-06 07:26
查看更多