6

我正在使用 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来运行这个测试。单独运行这个测试类时不需要它。我必须添加扩展 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 并阅读了文档。如果你不相信我,我愿意把我所有的书签都寄给你作为证据。但无论如何,我更喜欢建设性的答案。非常感谢。

4

1 回答 1

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 样式的测试。

于 2010-09-11T14:46:27.667 回答