【问题标题】:Is there an option to generate dynamically n tests in Spock是否可以选择在 Spock 中动态生成 n 个测试
【发布时间】:2020-07-20 19:00:26
【问题描述】:

我有一个包含 n 行的文件。

在我的 Spock 测试中,我下载、读取文件并声明它的每一行。

有没有办法在报告中生成 n 个测试而不是一个?

【问题讨论】:

    标签: unit-testing testing spock parametrized-testing


    【解决方案1】:

    也许你知道如何像这样@Unroll Spock tests and feature method names

    package de.scrum_master.stackoverflow.q63002164
    
    import spock.lang.Specification
    import spock.lang.Unroll
    
    class FixedInputBasedParametrisedTest extends Specification {
      @Unroll
      def "verify #inputLine"() {
        expect:
        inputLine.contains("et")
    
        where:
        inputLine << ["weather", "whether", "getters & setters"]
      }
    }
    

    运行测试时的结果,例如在 IntelliJ IDEA 中看起来像这样:

    但您也可以使用动态data providers,而不仅仅是固定值集。他们只需要Iterable

    例如,如果您有这样的资源文件

    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
    eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
    voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
    clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
    amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
    nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
    sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
    rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
    ipsum dolor sit amet.
    

    您可以像这样将其用作数据提供者:

    package de.scrum_master.stackoverflow.q63002164
    
    import spock.lang.Specification
    import spock.lang.Unroll
    
    class InputFileBasedParametrisedTest extends Specification {
      @Unroll
      def "verify #inputLine"() {
        expect:
        inputLine.contains("et")
    
        where:
        inputLine << new File("src/test/resources/test.txt").readLines()
      }
    }
    

    结果将如下所示:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2018-08-05
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多