Java 即使其中一个步骤失败,也要继续执行

Java 即使其中一个步骤失败,也要继续执行,java,cucumber,assertion,Java,Cucumber,Assertion,我想继续执行我的场景,即使在cucumber报告中出现了一些故障,也应该将其显示为故障,但不应该停止执行 我尝试使用软断言类并使用 SoftAssertion sa = new SoftAssertion(); if (response.getStatusCode() == 200) { Sytem.out.println("pAASED") } else { sa.fail("

我想继续执行我的场景,即使在cucumber报告中出现了一些故障,也应该将其显示为故障,但不应该停止执行

我尝试使用软断言类并使用

 SoftAssertion sa = new SoftAssertion();
if (response.getStatusCode() == 200) {
                Sytem.out.println("pAASED")
            } else {
                sa.fail("this is the failure");
            }
但是假设我有两个场景,第一个场景的响应不是200,它将阻塞并使场景失败

java.lang.AssertionError: this is the failure
    at org.junit.Assert.fail(Assert.java:88)


第二种情况甚至都不会发生。是否有人可以帮助我如何实现预期结果(即,无论有一个失败,它都应该继续执行)

这里有两件不同的事情

  • 作为响应的错误代码
  • 例外情况
  • 根据以下例外情况的定义:

    异常是一个事件,它发生在 程序,它会中断程序指令的正常流程

    通过这种方式,异常与正常的执行流完全不同。因此,如果您想在异常情况下继续,您需要使用。详情如下:

    try {
        response = yourMethodCall();
    } catch (Exception e) {
        log.error(e)
    }
    
    在上面的示例代码中:

  • 用实际的方法调用替换
    yourMethodCall()
  • 捕获适当的最小异常。(在您的情况下,它应该是
    AssertionError
  • 考虑记录异常以更好地调试,如代码中所示。对于该对象,创建日志对象

  • @注:谢谢您提供详细的解决方案。但是使用try-catch块只是简单地捕获异常,而不是失败。在报告中,我看到它传递了一个~~~~ try{if(response.getStatusCode()==200){try{JSONObject jsonObj=new JSONObject(response.asString());name=jsonObj.getString(“name”);}catch(异常e){e.getMessage();}}catch(断言者错误){e.getMessage~~~我使用了这段代码,但即使有一个问题,它也显示已通过。我希望它应该继续执行,但在报告中应该显示失败