Groovy 在SpringIDE中为Spock测试规范创建测试套件

Groovy 在SpringIDE中为Spock测试规范创建测试套件,groovy,junit,spock,geb,Groovy,Junit,Spock,Geb,我有数百个用Spock编写的测试规范。所有这些都是功能测试,可以独立运行。但是我遇到了一种情况,在运行其他测试之前,我需要运行一个特定的测试 使用Junit测试套件很容易实现这一点,而且在Eclipse中非常简单。但是,由于我所有的测试都是groovy测试,所以没有简单的方法在SpringIDE中为spock测试(用groovy编写)创建测试套件 请大家分享一下我们如何创建测试套件、运行一些特定测试以及定义测试顺序的想法 任何帮助都将不胜感激。Spock规范也是有效的JUnit测试(或套件)。这

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

使用Junit测试套件很容易实现这一点,而且在Eclipse中非常简单。但是,由于我所有的测试都是groovy测试,所以没有简单的方法在SpringIDE中为spock测试(用groovy编写)创建测试套件

请大家分享一下我们如何创建测试套件、运行一些特定测试以及定义测试顺序的想法


任何帮助都将不胜感激。

Spock规范也是有效的JUnit测试(或套件)。这就是为什么STS等工具可以识别它们。您应该能够将它添加到测试套件以及其他JUnit测试中

另一方面,如果您的测试依赖于执行顺序,那么这听起来不是一个好的做法。
如果在执行测试之前需要执行某些任务,则应将其置于
setup()
方法中。如果该逻辑对于多个测试是常见的,请考虑将其提取到父类。 尽管我认为它不允许您指定测试的顺序,但您可以使用Spock的Runner配置或@IgnoreIf/@Require内置扩展。看一看类似的问题。这可能也值得一看,因为它表明您可以直接包含类,而不是使用注释。

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

如果您希望以特定顺序运行的测试是同一个spock规范的一部分,那么您可以使用@Stepwise注释来指示测试(功能方法)按照它们在规范类中出现的顺序执行

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


另一个选项是将两个相关测试组合为一个多阶段测试,并按顺序使用多个when:/then:块对

正如我上面提到的,我可以单独或作为一个完整的集合运行Junit测试。但是我需要知道是否有一种方法可以创建一个测试套件,我们可以定义运行什么(包括测试的顺序)嗨,Alex,谢谢你的回答。我很满意您的第二个选择(将依赖测试合并为一个),但问题是它们是功能测试。如果我有一个大的测试,那么测试将需要很长时间运行。原因是脚本的后一部分必须等到收到命令后才能继续。在这种情况下,我必须在脚本中引入隐式等待,才能完成e2e旅程。谢谢erdi。但这是一个有点复杂的解决方案。有一个驱动程序脚本并从那里驱动测试执行是否更好(类似于有一个混合框架)。