Але*_*кий 1 java testng selenium
当我这样做时.assertAll(),SoftAssert会从其他测试中提取结果。
例子:
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();
}
Run Code Online (Sandbox Code Playgroud)
newTest1测试结果:
java.lang.AssertionError: The following asserts failed:
test1 expected [true] but found [false]`
Run Code Online (Sandbox Code Playgroud)
newTest2测试结果:
java.lang.AssertionError: The following asserts failed:
test1 expected [true] but found [false],
test2 expected [true] but found [false]`
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
testng.version == 6.9.10
selenium.version == 2.53.1
java.version == 1.8.0_65-b17
Run Code Online (Sandbox Code Playgroud)
与 JUnit 不同,TestNG 不会创建测试类的新实例。因此,如果将 SoftAssert 直接保存在测试类上,则两个测试方法都将使用相同的 SoftAssert 实例。inside使用测试方法实例化 SoftAsset或使用配置方法对其进行初始化,例如:
public SoftAssert softAssert;
@BeforeMethod
public void setup() {
softAssert = new SoftAssert();
}
@AfterMethod
public void tearDown() {
softAssert = null;
}
// ...
Run Code Online (Sandbox Code Playgroud)
不过要小心。一般来说,对于 TestNG,我发现最好不要在测试类对象上保存任何状态,因为如果您想并行运行方法,就会出现争用。在这种情况下,要么查看 TestNG 参数注入,要么更详细:
@Test
public void test1() {
SoftAssert softAssert = new SoftAssert();
// ...
}
@Test
public void test2() {
SoftAssert softAssert = new SoftAssert();
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |