从某种意义上讲,它等效于TheoryData
,但适用于测试类级别而不是方法级别。在当前的XUnit框架中这可能吗?如果是,那么到底如何?
答案 0 :(得分:0)
您可以使用here所述的ClassData做到这一点
您将创建如下所示的Generator类,并将ClassData夹具与Theory配合使用。
public class TestDataGenerator : IEnumerable<object[]>
{
private readonly List<object[]> _data = new List<object[]>
{
new object[] {5, 1, 3, 9},
new object[] {7, 1, 5, 3}
};
public IEnumerator<object[]> GetEnumerator() => _data.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
public class ParameterizedTests
{
public bool IsOddNumber(int number)
{
return number % 2 != 0;
}
[Theory]
[ClassData(typeof(TestDataGenerator))]
public void AllNumbers_AreOdd_WithClassData(int a, int b, int c, int d)
{
Assert.True(IsOddNumber(a));
Assert.True(IsOddNumber(b));
Assert.True(IsOddNumber(c));
Assert.True(IsOddNumber(d));
}
}
答案 1 :(得分:0)
您可以使用IClassFixture。创建一个自定义的TFixture以将数据返回到您的测试类构造函数。
git rebase --root --exec "git commit --amend --reset-author --no-edit"
您的方法应该继承自定义的固定装置
namespace Xunit
{
public interface IClassFixture<TFixture> where TFixture : class
{
}
}