让xUnit组合参数

时间:2015-08-18 09:17:33

标签: unit-testing xunit xunit.net

使用xUnit时,可以使用InlineData属性对不同数据进行多次相同的测试运行。

  [Theory]
  [InlineData("A", 1)]
  [InlineData("B", 2)]
  public void TestAllValues(string x, int y)

我想在所有可能的组合中组合这些参数。我可以写下来。

  [Theory]
  [InlineData("A", 1)]
  [InlineData("A", 2)]
  [InlineData("A", 3)]
  [InlineData("B", 1)]
  [InlineData("B", 2)]
  [InlineData("B", 3)]
  public void TestAllValues(string x, int y)

在我的情况下,我需要测试更多的组合,比如说字母表中的每个字母以及从1到100的每个数字。我喜欢写类似

的内容
  [Theory]
  [InlineData("A-Z", 1..100)]
  public void TestAllValues(string x, int y)

或任何不需要2.600行的等价物。这个例子是为了简单起见,但我确实需要很多案例进行测试。

作为奖金问题。我可以在测试名称中反映组合吗?

1 个答案:

答案 0 :(得分:4)

原来有一种称为MemberData属性的东西。

 [Theory]
 [MemberData("AllCombinations")]        
 public void TestAllValues(string x, int y)
 {

您可以在哪里生成所有需要的组合。

 public static IEnumerable<object[]>AllCombinations{
    get 
    {
        foreach(var c in generateCombinations()){
           yield return new object [] { c.Letter, c.Number} //
        }
    }