Unit testing 让xUnit组合参数

Unit testing 让xUnit组合参数,unit-testing,xunit,xunit.net,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)]

使用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线的同等产品。这个例子是为了简单而设计的,但是我真的需要测试很多案例


作为一个额外的问题。我可以在测试名称中反映组合吗?

结果是有一个名为
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} //
        }
    }
公共静态IEnumerablAllCompositions{
得到
{
foreach(generateCombinations()中的var c){
返回新对象[]{c.字母,c.数字}//
}
}

注意:我还需要添加[Theory]属性。