我正在处理的遗留项目同时使用 JUnit4 和 TestNG 测试框架,由于我无法控制的原因,我无法升级到 JUnit5。
虽然我们创建的所有新测试套件(类)都是使用 TestNG 编写的,但许多旧的测试类仍然在 JUnit4 上运行。主要是使用 JUnit4 编写参数化测试的困难(无论是传统方式还是通过JUnitParams扩展)一直在推动我们走向 TestNG 的方向。
我添加更多测试方法的一个测试类正在使用 JUnit4。为了在其中进行参数化测试,我从 JUnit4 移动到 TestNG(通过更改
import
语句,更新 @Before
-> @BeforeClass
等注释)。然而从那时起,一些测试开始因断言错误而失败。
可能出了什么问题,我该如何调查?
感谢@SyedSaubaan的指导
结果我混淆了 TestNG 的
@BeforeClass
和 @BeforeMethod
注释。
@BeforeMethod:这将在每个@Test注释的方法之前执行。
@BeforeClass:这将在第一个@Test方法执行之前执行。它将在整个测试用例中仅执行一次。
@BeforeClass
方法正确重新定位到 @BeforeMethod
方法后,断言得到修复。@BeforeMethod
而不是 @BeforeClass