Testng 软断言没有按预期工作
Testng soft assertion doesn't wrok as expected
我在面试中被问到这个testng问题。我回答这个问题是因为第一个测试会失败,第二个会通过。
但令我惊讶的是,当我 运行 在一个智能想法中。我可以看到两者都失败了。
对于第二次测试,预期值显示为 "values"。不明白为什么?
import org.testng.annotations.Test;
import org.testng.annotations.SoftAssert;
public class SoftAssertion{
SoftAssert softAssert = new SoftAssert();
@Test
public void first(){
softAssert.assertEquals("values", "value");
softAssert.assertAll();
}
@Test
public void second(){
softAssert.assertEquals("value", "value");
softAssert.assertAll();
}
}
我正在使用testng 7.1.0
Test Run Result
您将 SoftAssert
创建为 class 成员,因此这两个测试都在同一个实例上运行,并且您在同一个对象中积累了软断言。当您在第二个测试中调用 assertAll()
时,第一个失败的断言已被收集。现在我们开始。
因此在对象级别创建 SoftAssert
实例是错误的。它应该在一个方法中创建。
但是,仍然存在一个可能的副作用:TestNG 不保证测试方法执行的顺序,因此如果 second()
测试先执行,您会看到一个失败,一个通过。
我在面试中被问到这个testng问题。我回答这个问题是因为第一个测试会失败,第二个会通过。 但令我惊讶的是,当我 运行 在一个智能想法中。我可以看到两者都失败了。
对于第二次测试,预期值显示为 "values"。不明白为什么?
import org.testng.annotations.Test;
import org.testng.annotations.SoftAssert;
public class SoftAssertion{
SoftAssert softAssert = new SoftAssert();
@Test
public void first(){
softAssert.assertEquals("values", "value");
softAssert.assertAll();
}
@Test
public void second(){
softAssert.assertEquals("value", "value");
softAssert.assertAll();
}
}
我正在使用testng 7.1.0
Test Run Result
您将 SoftAssert
创建为 class 成员,因此这两个测试都在同一个实例上运行,并且您在同一个对象中积累了软断言。当您在第二个测试中调用 assertAll()
时,第一个失败的断言已被收集。现在我们开始。
因此在对象级别创建 SoftAssert
实例是错误的。它应该在一个方法中创建。
但是,仍然存在一个可能的副作用:TestNG 不保证测试方法执行的顺序,因此如果 second()
测试先执行,您会看到一个失败,一个通过。