Groovy断言失败时继续

时间:2020-07-20 06:08:28

标签: java grails groovy

我在单元测试中使用了Groovy脚本。我有以下代码片段,并且在单个测试脚本中使用了多个断言。

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

assert a==b
assert a==c

第一个断言失败,执行被停止。但我想继续编写更多代码段。

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

2 个答案:

答案 0 :(得分:2)

在Groovy和Java中,AssertionErrors是程序无法从中恢复的错误。我建议您设置单元测试以对每个测试进行测试/声明一件事。这是单元测试的最佳实践,它使识别测试失败的原因变得更加容易。

您的示例使显而易见的断言失败了。考虑到在进行构建测试时,不一定是这种情况。通过每个测试一个断言,您可以通过测试名称识别原因。如果您要使用断言以外的其他方式进行验证,则测试将在失败后继续进行-如果不分析日志,则哪个条件失败的可能性将不那么明显。

答案 1 :(得分:1)

如果您要滥用“ 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