让xUnit组合参数
Let xUnit combine parameters
使用 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} //
}
}
使用 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} //
}
}