当前位置: 首页 > 知识库问答 >
问题:

Groovy断言失败时继续

管弘
2023-03-14

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

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

assert a==b
assert a==c

第一个断言失败并停止执行。但我想继续进一步的代码片段。

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

共有2个答案

夏侯承恩
2023-03-14

如果要滥用“差异/调试信息”的断言,可以捕获断言错误。例如。:

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
陈毅
2023-03-14

在Groovy和Java中,断言错误是程序无法恢复的错误。我建议将单元测试设置为每个测试测试/断言一件事。这是单元测试的最佳实践,它可以更容易地识别测试失败的原因。

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

 类似资料:
  • 问题内容: 我正在通过Java与Eclipse和TestNG框架一起使用Selenium RC。我有以下代码片段: 第一个断言失败,执行被停止。但我想继续进一步的代码片段。 问题答案: Selenium IDE使用验证执行软断言,这意味着即使检查失败,测试仍将继续,并且可以在测试结束时或在发生硬断言时报告失败。 使用TestNG,可以通过使用自定义测试侦听器来拥有这些软断言。我已经在博客上记录了如

  • 问题内容: 编辑:切换到一个更好的示例,并阐明了为什么这是一个真正的问题。 我想用Python编写在断言失败时继续执行的单元测试,这样我就可以在一个测试中看到多个失败。例如: 在这里,测试的目的是确保Car’s正确设置其字段。我可以将其分解为四个方法(这通常是个好主意),但是在这种情况下,我认为将其保留为测试单个概念的单个方法(“对象已正确初始化”)更容易理解。 如果我们认为最好不要破坏该方法,那

  • 我是JMeter和断言概念的新手。当我试图执行一个JMX文件(包含JMeter中的断言)时,遇到了以下错误消息: 断言错误:错误断言失败:真断言失败消息:测试失败:变量(搜索结果)不相等/接收:找不到[[[]]]]比较:找不到[[[]]]]] 脚本的执行方式如下:$java-jar./apache-jmeter-2.10/bin/apachejmeter.jar-t./jmeter-master/

  • 问题内容: 当Windows上的Visual C ++断言失败时,调试器将停止,显示消息,然后让您继续(或者,如果未运行调试会话,则为您启动Visual Studio)。 在Linux上,assert()的默认行为似乎是显示错误并退出程序。由于我所有的断言都通过宏进行,因此我尝试使用信号来解决此问题,例如 但是,尽管GDB(通过KDevelop)停在了正确的位置,但我似乎无法继续过去,并且在GDB

  • 有一个excelsheet,其中所有URL(16)都列在一列中。现在,一旦页面加载,需要验证页面标题是否与excel中已存储的预期标题匹配。我可以使用for循环执行它。如果全部通过,它将运行所有URL,但如果失败,它将停止运行。我需要完整地运行它,并给出一份通过和失败的报告。我编写了以下代码。 请在这方面帮助我。

  • 我是新手,不会摆弄它。所以,请对我有耐心。 单击PopupMenuButton的特定菜单项时,将引发以下异常,但始终只能第二次: 'package:flutter/src/widgets/navigator.dart':失败断言:line 1846 pos 12:'!_debuglocked':不是true。 正如您所看到的,有私有变量用于保存WordPair对象,但也用于菜单选择。 _popup