如何绕过spock数据提供程序是null错误

时间:2018-05-17 15:39:36

标签: groovy junit spock data-driven-tests

我有一个SpringBootTest,它从application.properties中读取属性。设置代码使用@Value注释来相应地设置值。其中一个属性是名称数组。

我正在尝试使用Spock编写数据驱动的测试。 where语句使用在setup:

中初始化的这些名称
expect:
retrievedName == value
where:
value << getNames()

org.spockframework.runtime.SpockExecutionException: Data provider is null始终失败。 似乎在设置代码中初始化属性之前调用了getNames()调用。如果我不使用where语句(数据驱动测试),一切正常。有解决方法吗?

1 个答案:

答案 0 :(得分:0)

您不能将在setup节中初始化的数据用作数据驱动测试的源。根据{{​​3}}:

  

尽管最后声明了它,但where块在包含它的特征方法运行之前会被评估。

您可以尝试使用setupSpec()方法和@Shared字段作为解决方法。

有关示例,请参见the docs