【问题标题】:How to get around spock Data provider is null error如何绕过 spock Data provider is null 错误
【发布时间】:2018-05-17 15:39:35
【问题描述】:

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

我正在尝试使用 Spock 编写数据驱动测试。 where 语句使用在设置中初始化的这些名称:

expect:
retrievedName == value
where:
value << getNames()

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

【问题讨论】:

  • 欢迎来到 SO。请了解如何向MCVE 提供您的问题,而不仅仅是语无伦次的 sn-ps。那么任何人都可以重现和解决您的问题的机会比这种模糊的问题要高得多。因此,请相应地编辑您的问题。谢谢。

标签: groovy junit spock data-driven-tests


【解决方案1】:

您不能将在 setup 部分中初始化的数据用作数据驱动测试的来源。根据the docs

虽然它是最后声明的,但 where 块在包含它的功能方法运行之前被评估。

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

有关示例,请参阅 here

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 2021-02-25
    • 1970-01-01
    • 2015-09-28
    • 2022-11-22
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多