【问题标题】:Upgrading to JUnit4 and keeping legacy JUnit 3 tests and test suites by running them together升级到 JUnit4 并通过一起运行来保留旧的 JUnit 3 测试和测试套件
【发布时间】:2010-12-24 03:06:10
【问题描述】:

我很惊讶到目前为止还没有找到答案。如果我缺少一些基本的东西,我会很高兴知道这一点。

有一个大型遗留代码库已升级到 Java 6(从 1.4 开始)。代码中存在大量 JUnit 3 测试,并组织成测试套件,这些测试套件在 Eclipse 中使用 JUnit 4 默认运行程序成功运行。

现在,我添加了纯 JUnit 4 测试(注释、无 TestCase 等)的新测试。什么方法可以同时运行旧的 JUnit 3 测试套件和新的 JUnit 4 测试?

【问题讨论】:

  • 我会回答我们使用 AntTask 来执行此操作,但我认为您的意思只是 Eclipse。如果是这样,请标记为 Eclipse。
  • @shoover - 不,我指的不仅仅是 Eclipse。我正在寻找仅使用 java 运行测试的通用解决方案。

标签: java unit-testing junit backwards-compatibility junit4


【解决方案1】:

只需在运行配置中使用“JUnit4”测试运行器即可。

JUnit4 二进制文件有一个向后兼容层,允许它在同一个测试套件中同时拥有 JUnit3 和 JUnit4 样式类。

对于命令行构建,只需使用 JUnit4 jars 而不是 JUnit3。

这样做是为了简化您现在正在进行的迁移。

此外,它在我的项目中运行良好。

【讨论】:

  • Alex,谢谢你,但我一直在寻找更具体的解决方案——感谢你的回答,我相信我想出了一个。我会将其添加为答案,并会给予你功劳。
  • 你能检查一下这个问题吗?我不知道如何configure Junit4 vs Junit3。 (这里)[stackoverflow.com/q/26848673/668650] 是问题所在。
【解决方案2】:

@RunWith(Suite.class) 让我有机会将 JUnit 4 和 JUnit 3 测试和测试用例结合在一起:

@RunWith(Suite.class)
@Suite.SuiteClasses({
    ExampleOfJunit3TestSuite.class, 
    ExampleOfJUnit3TestCase.class, 
    ExampleOfJUnit4TestSuite.class,
    ExampleOfJUnit4TestCase.class})   
public class BothJUnit4and3TestSuite {
}

BothJUnit4and3TestSuite 运行 @Suite.SuiteClasses 中列出的所有测试和测试套件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多