【问题标题】:Groovy assert continue on failureGroovy 断言在失败时继续
【发布时间】:2020-07-20 16:03:18
【问题描述】:

我在单元测试中使用了 groovy 脚本。我有以下代码 sn-p,并且在我的单个测试脚本中使用了多个断言。

def a ='welcome'
def b ='test'
def c ='welcome'

assert a==b
assert a==c

第一个断言失败并停止执行。但是我想继续进一步的sn-p代码。

类似于 selenium 中的软断言,我应该如何收集 groovy 中的所有失败异常。

【问题讨论】:

  • "第一个断言失败,执行停止。但我想继续进一步的sn-p代码。" - 当第一个断言失败时,您希望发生什么?通常,断言用于明确表示如果控制失败,您不希望控制继续进行。如果您只想检查某个条件是否为真,请使用if 而不是assert

标签: java grails groovy


【解决方案1】:

在 Groovy 和 Java 中,AssertionErrors 是程序无法恢复的错误。我建议设置你的单元测试来测试/断言每个测试的一件事。这是单元测试的最佳实践,它可以更轻松地确定测试失败的原因。

您的示例清楚地表明了哪个断言失败了。考虑到作为您的构建测试,情况不一定如此。每个测试使用一个断言,您可以通过测试名称识别原因。如果您要使用断言以外的其他方式进行验证,则让您的测试在失败时继续 - 如果不分析日志,哪个条件失败将不太明显。

【讨论】:

    【解决方案2】:

    如果你想滥用“diff/debug-infos”的断言,你可以抓住AssertionError。例如:

    def a = 42
    def b = 666
    
    try {
        assert a==b
    }
    catch (AssertionError e) {
        println e.message
    }
    print "the end"
    
    // assert a==b
    //        || |
    //        || 666
    //        |false
    //        42
    // the end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 2010-12-15
      • 2017-10-24
      相关资源
      最近更新 更多