【问题标题】:Porting JUnit tests from 3.x to 4.x将 JUnit 测试从 3.x 移植到 4.x
【发布时间】:2013-01-29 11:38:21
【问题描述】:

我们有很多用 Junit 3.x 编写的旧单元测试。我的任务是将它们移植到我们的 JUnit 4.x 编码标准,其中包括禁止使用“扩展 TestCase”。

一些旧测试调用了 super.setUp(),我现在需要删除它,但是,我不确定该调用中发生了什么。我可以直接删除这行代码而不用担心,还是应该用其他东西替换它?

【问题讨论】:

    标签: java junit4 junit3


    【解决方案1】:

    由于现在在每次测试之前都会调用 setUp(),因此您可以安全地删除 super.setUp()。

    【讨论】:

    • 不一定。如果测试有一个不是junit.framework.TestCase 的基类,并且该基类有一个非抽象的setUp() 调用,那么对super.setUp() 的调用是绝对必要的。如果您在移植到 JUnit4 后有基类(并且很少需要使用规则),则使 @Before@After 方法具有良好的名称并使其成为最终方法。
    【解决方案2】:

    注释掉该行,然后运行测试。如果测试写得正确,那么测试结果应该会在假设测试之前成功的情况下为您提供答案。

    【讨论】:

    • 不幸的是,我没有时间运行任何测试,我只需要让它们编译(无需注释所有内容)并且有数百个测试。在接下来的几周内,我将致力于实际运行测试。
    • @glenneroo 您需要在移植时腾出时间运行每个测试。如果您无法抽出时间,请稍后在您有时间时移植测试。
    • 你有一个有效的观点,但在我的情况下,不幸的是它不是一个选项。
    【解决方案3】:

    super.setUp() 是 TestCase 不做任何事情,可以安全地删除。如果您要扩展另一个类,您仍然需要保留 super.setUp() 调用。但是,它不会编译失败,所以你应该没问题。

    例如,假设我们有 ATest 扩展 BTest 和 BTest 扩展 TestCase。您可以安全地从 BTest 而不是 ATest 中删除 super.setUp() 调用。由于 BTest 可能会做某事,因此 ATest 仍然需要调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多