首页 > 解决方案 > 考虑到枚举源的所有值(基本上作为 Junit5 @EnumSource 的替代品),如何在 Spock2 中创建数据驱动测试?

问题描述

我想测试一个特定的系统行为,考虑枚举中的所有值(有时不包括一些值)。这可以在 Junit5 中使用@EnumSource注释轻松实现。Spock2 中是否有任何替代方法(或任何简单的解决方法)?

标签: groovyspockjunit5

解决方案


您可以使用 Spocks 的能力来使用任何 Iterable数据源:

import spock.lang.*

class EnumSpec extends Specification {
  def "let's try this!"(Color color) {
    expect:
    color.name() == ''

    where:
    color << Color.values()
  }
}

enum Color {
 RED, BLUE, GREEN
}

这个测试当然会失败 3 次,因为名称不为空,但它显示了如何迭代所有枚举值。


推荐阅读