このようなテストを作成するときは、NUnit が提供するTestCaseSource属性を使用するのが好きです。これらのテストはデータ ドリブン テストと呼ばれていると思います。
テストの私のバージョンは次のようになります。
public class TestClass
{
public enum ABigEnum
{
A,
B,
C,
D
}
public IEnumerable TestValues
{
get
{
yield return new TestCaseData(ABigEnum.A, false).SetName("Assert A");
yield return new TestCaseData(ABigEnum.B, false).SetName("Assert B");
yield return new TestCaseData(ABigEnum.C, false).SetName("Assert C");
yield return new TestCaseData(ABigEnum.D, true).SetName("Assert D");
}
}
[Theory]
[TestCaseSource(typeof(TestClass), "TestValues")]
public void Test(ABigEnum enumValue, bool assertValue)
{
//generate someValue based upon enumValue
Assert.That(enumValue, Is.EqualTo(assertValue), "an amazing assertion message");
}
}
編集 1
Datapoint
実際には、属性を で使用できますTheory
。このようなもの:
public enum ABigEnum
{
A,
B,
C,
D
}
[Datapoint]
public Tuple<ABigEnum, bool>[] TestValues = new[]
{
new Tuple<ABigEnum, bool>(ABigEnum.A, false), new Tuple<ABigEnum, bool>(ABigEnum.B, false),
new Tuple<ABigEnum, bool>(ABigEnum.C, false), new Tuple<ABigEnum, bool>(ABigEnum.D, true)
};
[Theory]
public void Test(Tuple<ABigEnum,bool> data)
{
//generate someValue based upon enumValue
Assert.That(data.Item1, Is.EqualTo(data.Item2), "an amazing assertion message");
}