Testng 检查@AfterMethod中的软断言
我想使用Testng 检查@AfterMethod中的软断言,testng,Testng,我想使用@AfterMethod检查TestNG中的软断言。我想这样做: SoftAssert sa; @BeforeMethod(alwaysRun=true) public void beforeMethod() { sa = new SoftAssert(); } @Test public void test1() { sa.assertTrue(false); } @Test public void test2() { sa.assertTrue(false
@AfterMethod
检查TestNG中的软断言。我想这样做:
SoftAssert sa;
@BeforeMethod(alwaysRun=true)
public void beforeMethod() {
sa = new SoftAssert();
}
@Test
public void test1() {
sa.assertTrue(false);
}
@Test
public void test2() {
sa.assertTrue(false);
}
@AfterMethod(alwaysRun = true)
public void afterMethod() {
sa.assertAll();
}
问题是TestNG将此标记为1个测试通过,1个配置失败:
默认测试测试运行:2,失败:0,跳过:1
配置失败:2,跳过:1 如何告诉TestNG此测试失败?我想使用
@AfterMethod
,这样如果我忘记在测试结束时放置sa.assertAll()
,我就不必担心误报了。您可以尝试:
@AfterMethod(alwaysRun = true)
public void afterMethod(ITestResult result) {
try {
sa.assertAll();
} catch(Throwable t) {
result.setStatus(FAILURE);
result.setThrowable(t);
}
}
您可以尝试:
@AfterMethod(alwaysRun = true)
public void afterMethod(ITestResult result) {
try {
sa.assertAll();
} catch(Throwable t) {
result.setStatus(FAILURE);
result.setThrowable(t);
}
}
为什么要这样做?所以它在测试结果中显示为测试失败,而不是配置失败OK,但您的a不应该这样做。断言应该是@Test方法的一部分@之前/之后有常见的测试设置和/或测试清理。但如果您执行软断言,然后忘记调用assertAll方法,则很容易出错。在这种情况下,不要使用软断言,而是使用Assert;)为什么要这样做?所以它在测试结果中显示为测试失败,而不是配置失败OK,但您的a不应该这样做。断言应该是@Test方法的一部分@之前/之后有常见的测试设置和/或测试清理。但如果您执行软断言,然后忘记调用assertAll方法,则很容易出错。在这种情况下,不要使用软断言,而是使用Assert;)