のために複数のデータレコード私は単体テストにかなり新しいですし、次のコードのxUnitとテスト
public class PowerOf
{
public int CalcPowerOf(int @base, int exponent) {
if (@base == 0) { return 0; }
if (exponent == 0) { return 1; }
return @base * CalcPowerOf(@base, exponent - 1);
}
}
を持って、私はそれのために書いたユニットテスト(xUnitフレーム付き)が最初にこの1だったが、私は適切なアプローチであるかどうか、または別のパターンを使用する必要があるかどうかは不明です。 私が知りたかったことは、xUnitのドキュメント上にドキュメントやリファレンスの例がないので、これが複数のデータセットを "単体テスト"に渡すための正しい使用法であるかどうかです。
[Fact]
public void PowerOfTest() {
foreach(var td in PowerOfTestData()) {
Assert.Equal(expected, CalcPowerOf(@base, exponent));
}
}
public class TestData {
int Base {get;set;}
int Exponent {get;set;}
int ExpectedResult {get;set;}
}
public List<TestData> PowerOfTestData() {
yield return new TestData { Base = 0, Exponent = 0, TestData = 0 };
yield return new TestData { Base = 0, Exponent = 1, TestData = 0 };
yield return new TestData { Base = 2, Exponent = 0, TestData = 1 };
yield return new TestData { Base = 2, Exponent = 1, TestData = 2 };
yield return new TestData { Base = 5, Exponent = 2, TestData = 25 };
}
特別なクラスを使用することはできませんか? – RecursEve
でも可能ですが、xUnitのドキュメントで言及されているように、常にIEnumerableの 'object []'を返さなければなりません。 –