从 JUnit4 迁移到 TestNG 后,单元测试在测试方法中表现出“状态”

问题描述 投票:0回答:1

我正在处理的遗留项目同时使用 JUnit4 和 TestNG 测试框架,由于我无法控制的原因,我无法升级到 JUnit5。

虽然我们创建的所有新测试套件(类)都是使用 TestNG 编写的,但许多旧的测试类仍然在 JUnit4 上运行。主要是使用 JUnit4 编写参数化测试的困难(无论是传统方式还是通过JUnitParams扩展)一直在推动我们走向 TestNG 的方向。


我添加更多测试方法的一个测试类正在使用 JUnit4。为了在其中进行参数化测试,我从 JUnit4 移动到 TestNG(通过更改

import
语句,更新
@Before
->
@BeforeClass
等注释)。然而从那时起,一些测试开始因断言错误而失败。

  • 由于其内部库,我无法在这里分享代码片段,但基本上测试已经开始在不同的测试方法中展现出“状态”,因此我们从业务逻辑发布的指标正在被“求和” -up' 跨越所有不同的测试方法。
  • 因此,如果我单独运行每个测试方法,它就会通过,而批量运行它们会导致很少有测试通过,而大多数其他测试会失败,因为围绕指标计数器值的断言错误。

可能出了什么问题,我该如何调查?

testng junit4
1个回答
0
投票

感谢@SyedSaubaan的指导


结果我混淆了 TestNG 的

@BeforeClass
@BeforeMethod
注释

@BeforeMethod:这将在每个@Test注释的方法之前执行。

@BeforeClass:这将在第一个@Test方法执行之前执行。它将在整个测试用例中仅执行一次。


  • 将指标对象初始化从
    @BeforeClass
    方法正确重新定位到
    @BeforeMethod
    方法后,断言得到修复。
  • 这当然会发生,因为在运行每个测试方法之前需要重置指标对象 -> 重新初始化,所以从逻辑上讲,它应该放在
    @BeforeMethod
    而不是
    @BeforeClass
© www.soinside.com 2019 - 2024. All rights reserved.