0

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

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

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

4

1 回答 1

2

也许你知道如何@UnrollSpock 测试和特征方法名称,如下所示:

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 中运行测试时的结果如下所示:

使用固定输入数据的展开方法

但是您也可以使用动态数据提供者,而不仅仅是固定的值集。他们只是需要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()
  }
}

结果将如下所示:

使用动态输入数据展开的方法

于 2020-07-21T01:11:50.817 回答