Groovy spockframework:在每个特性之后检查预期结果

Groovy spockframework:在每个特性之后检查预期结果,groovy,automated-tests,spock,geb,Groovy,Automated Tests,Spock,Geb,我使用spockframework和geb实现测试自动化。我想在每个功能完成后执行一个简单的检查,以确保没有显示错误对话框,我添加了以下cleanup()方法: 代码在每个功能之后执行,但在显示对话框时不会引发任何错误。Spock使用AST转换连接每个测试标签的功能(当时,预期等);他们可能不会在cleanup方法上运行转换。他们或者不期望或者不鼓励清理中的断言,这样代码可以运行,但实际上不会断言任何东西 您可以通过使用标准的Groovyassert调用而不使用expect块来解决这个问题 从我

我使用spockframework和geb实现测试自动化。我想在每个功能完成后执行一个简单的检查,以确保没有显示错误对话框,我添加了以下cleanup()方法:


代码在每个功能之后执行,但在显示对话框时不会引发任何错误。

Spock使用AST转换连接每个测试标签的功能(
时,
预期
等);他们可能不会在
cleanup
方法上运行转换。他们或者不期望或者不鼓励清理中的断言,这样代码可以运行,但实际上不会断言任何东西

您可以通过使用标准的Groovy
assert
调用而不使用
expect
块来解决这个问题

从我们上面的评论讨论中总结-如果您想接受它作为答案;-)


我不确定
cleanup
中是否有断言。您确定您的期望实际上是作为断言执行的吗?如果您真的需要在
cleanup
中执行此操作,可以使用正常的
assert
调用而不是期望来尝试。我需要在每个功能/测试之后执行此操作。从文档中我看到,cleanup()是在每个功能之后执行的。但也许,正如你所说,它并不意味着要有主张。还有其他选择吗?您可以尝试使用
assert
调用。Spock使用AST转换为其标签连接正确的行为(
when
expect
,等等),可能它们甚至不在
cleanup
方法上运行转换。一个简单的断言仍然可以工作,因为它是Groovy本身的一部分!我唯一担心的是,cleanup方法中的简单断言不是测试报告的一部分。我尝试了一个测试,它就像一个符咒:当测试失败时,报告会包含它。精彩的!
 def cleanup() {
    expect:
    $('.myErrrorDialogClass').isEmpty()
 }