在Spring IDE中为Spock测试规范创建测试套件

时间:2013-11-25 22:58:39

标签: groovy junit spock geb

我有数百个用Spock编写的测试规范。所有这些都是功能测试,可以独立运行。但我遇到过一种情况,我需要在运行其他测试之前运行一个特定的测试。

这很容易使用Junit Test Suite实现,而且在Eclipse中非常直接。但由于我的所有测试都是常规测试,因此没有简单的方法可以在Spring IDE中为spock测试创建一个Test Suite(用Groovy编写)。

有人可以分享一些关于我们如何创建测试套件并运行某些特定测试以及定义测试顺序的想法。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

Spock规范也是有效的JUnit测试(或套件)。这就是他们被STS等工具认可的原因。您应该能够将它添加到测试套件以及其他JUnit测试。

另一方面,如果您的测试依赖于执行顺序,那么这听起来不是一个好习惯。 如果在测试执行之前需要执行某些任务,则应将其放在setup()方法中。如果该逻辑对于多个测试是通用的,请考虑将其提取到父类。

答案 1 :(得分:1)

如果您只需要在规范中按顺序执行方法,请查看@spock.lang.Stepwise,这对于测试工作流程非常方便。否则,您具有与普通JUnit相同的可能性:您可以在您选择的构建工具中使用JUnit(4)测试套件,模型测试套件(在STS中可能没有帮助),或者通过Eclipse运行配置定义测试套件。我不知道对后者的支持有多远,但至少应该允许你在一个包中运行所有测试。

答案 2 :(得分:0)

虽然我认为它不允许您指定测试的顺序,但您可以使用Spock的Runner配置或@ IgnoreIf / @ Require内置扩展。看看my response类似的问题。它可能也值得查看RunnerConfiguration javadoc,因为它表明您可以直接包含类而不是使用注释。

答案 3 :(得分:0)

如果要按特定顺序运行的测试是同一spock规范的一部分,则可以使用@Stepwise批注指示测试(要素方法)按照它们在Specification类中出现的顺序执行

正如其他人所提到的,如果可以的话,最好避免这种依赖,因为它引入了复杂性。例如,如果第一次测试失败会发生什么?是否会使系统处于未定义状态以进行后续测试?因此,最好使用setup()和cleanup()方法(或setupSpec()和cleanupSpec())来防止测试内部依赖性。

另一种选择是将两个相关测试组合成一个多阶段测试,其中有多个:/ then:块对依次。