Java 软断言的工作原理

Java 软断言的工作原理,java,selenium-webdriver,testng,Java,Selenium Webdriver,Testng,我知道了继续测试,即使一个或多个断言在TestNG中失败。 为了在我的项目中实现软断言,我参考了下面的链接 但是我不理解代码执行的流程,比如函数调用,流程 请帮助我了解软资产的工作流程 代码: 注意:即使上述断言失败,执行仍将继续 谢谢 Mahesh软断言通过将故障存储在本地状态来工作(可能会在遇到故障时将其记录到stderr)。当测试完成时,需要检查是否存在任何存储的故障,如果遇到任何故障,则在该点使整个测试失败 我相信TestNG的维护人员想到的是在测试结束时调用myAssertion

我知道了继续测试,即使一个或多个断言在TestNG中失败。 为了在我的项目中实现软断言,我参考了下面的链接

但是我不理解代码执行的流程,比如函数调用,流程

请帮助我了解软资产的工作流程

代码:

注意:即使上述断言失败,执行仍将继续

谢谢
Mahesh

软断言通过将故障存储在本地状态来工作(可能会在遇到故障时将其记录到stderr)。当测试完成时,需要检查是否存在任何存储的故障,如果遇到任何故障,则在该点使整个测试失败

我相信TestNG的维护人员想到的是在测试结束时调用
myAssertion.assertAll()
,该调用将运行
Assert.fail()
,并在之前的任何软断言检查失败时使测试失败

您可以通过添加
@Before
方法来初始化本地软断言对象,在测试中使用它,并在
方法后添加
@Before
方法来在软断言对象上运行
assertAll()
方法来实现这一点


请注意,这种
@Before
/
@After
方法使测试不具有线程安全性,因此每个测试都必须在测试类的新实例中运行。如果测试需要线程安全,最好在测试方法本身内部创建软断言对象,并在方法末尾运行
assertAll()
检查。TestNG的一个很酷的特性是它能够运行多线程测试,所以在实现这些软断言时请注意这一点。

您能给我们展示一下您的代码吗?你试了什么?你期待什么?到底发生了什么?代码如下。导入org.testng.asserts.Assertion;导入org.testng.asserts.IAssert//软断言公共类SoftAssertions的实现扩展了断言{@Override public void executeAssert(IAssert a){try{a.doAssert();}catch(AssertionError ex){System.out.println(a.getMessage();}}}}//调用软断言SoftAssertions SoftAssertions=new SoftAssertions();assertTrue(actualTitle.equals(expectedTitle),“即使用户名和密码错误,也能成功登录”);即使上述断言失败,执行仍将继续请将此添加到您的问题中。阅读和理解正确格式的代码要容易得多,并且使未来的读者更容易理解这个问题。谢谢。。代码粘贴在上面..这是您的代码,但您希望得到什么输出,而您得到了什么输出?您对软断言的错误理解来自何处?有关处理软断言的抽象类的示例,请参阅:
import org.testng.asserts.Assertion;
    import org.testng.asserts.IAssert; 

    //Implementation Of Soft Assertion 
    public class SoftAssertions extends Assertion{   
    @Override public void executeAssert(IAssert a){ 
    try{ a.doAssert(); } 
    catch(AssertionError ex){ 
    System.out.println(a.getMessage()); } } } 

    //Calling Soft Assertion
 SoftAssertions sa = new SoftAssertions(); 
 sa.assertTrue(actualTitle.equals(expectedTitle),
"Login Success, But Uname and Pwd are wrong");