当我执行 1 4 7 10
and 1 4 7 11
and 1 4 7 12
and 1 4 7 13
and 2 4 8 10
and ...
until there are the 108 combinations
时,perms
会从其他测试中获取结果。
示例:
.assertAll()
newTest1测试结果:
SoftAssert
newTest2测试结果:
public SoftAssert softAssert = new SoftAssert();
@Test(priority = 1)
public void newTest1() {
softAssert.assertTrue(false, "test1");
softAssert.assertAll();
}
@Test(priority = 2)
public void newTest2() {
softAssert.assertTrue(false, "test2");
softAssert.assertAll();
}
有什么想法吗?
java.lang.AssertionError: The following asserts failed:
test1 expected [true] but found [false]`
答案 0 :(得分:3)
与JUnit不同,TestNG不会创建测试类的新实例。因此,如果将SoftAssert直接保存在测试类上,则两个测试方法都将使用相同的SoftAssert实例。要么将实例化SoftAsset inside
测试方法,要么使用以下配置方法对其进行初始化:
public SoftAssert softAssert;
@BeforeMethod
public void setup() {
softAssert = new SoftAssert();
}
@AfterMethod
public void tearDown() {
softAssert = null;
}
// ...
虽然要小心。通常使用TestNG,我发现最好不保存测试类对象上的任何状态,因为如果你想并行运行方法会有争用。在这种情况下,要么看看TestNG参数注入,要么更详细:
@Test
public void test1() {
SoftAssert softAssert = new SoftAssert();
// ...
}
@Test
public void test2() {
SoftAssert softAssert = new SoftAssert();
// ...
}