我想将测试用例的相同代码重用于几种手工制作的输入数据和预期结果的组合,但无需复制粘贴每组代码。其他语言的框架以不同的方式支持它,例如在Groovy/Spock中:

def "maximum of two numbers"(int a, int b, int c) {
        expect:
        Math.max(a, b) == c

        where:
        a | b | c
        1 | 3 | 3
        7 | 4 | 4
        0 | 0 | 0
}

在ExUnit中执行此操作的首选方法是什么?
也许ExUnit不是最好的框架?

最佳答案

我想您可以做一些非常简单的事情,例如:

test "Math.max/2" do
  data = [
    {1, 3, 3},
    {7, 4, 4},
  ]

  for {a, b, c} <- data do
    assert Math.max(b, c) == a
  end
end

我认为,模式匹配使您在做这些事情时非常明确。而且,您可以在ExUnit中保持变量和断言的简单性。

10-04 10:44