【问题标题】:Spring 3+ How to create a TestSuite when JUnit is not recognizing itSpring 3+当JUnit无法识别时如何创建TestSuite
【发布时间】:2011-04-11 02:52:29
【问题描述】:

我正在使用 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 并阅读了文档。如果你不相信我,我愿意把我所有的书签都寄给你作为证据。但无论如何,我更喜欢建设性的答案。非常感谢。

【问题讨论】:

  • 哈哈。我再次谷歌搜索并在谷歌搜索结果中看到了我的问题。我要重新搜索:)
  • Rod Johnson 自己写道,“Spring 本身有一个出色的单元测试套件”(theserverside.com/news/1363858/…)。这个优秀的测试套件记录在哪里?
  • 你给的网址无效!

标签: spring junit testing suite


【解决方案1】:

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

【讨论】:

  • 非常感谢。我尝试了你的第一个建议,它奏效了!我期待 Spring 有自己的测试套件,由 Rod Johnson 编写。但也许他的意思不同。
猜你喜欢
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
相关资源
最近更新 更多