パラメータ化されたテストを記述し、プロパティアクセサをパラメータとして渡すことができます。
例を参照してください。3つのプロパティを持つクラスが次のとおりであると想定します。
public class MyClass
{
public string First { get; set; }
public string Second { get; set; }
public string Third { get; set; }
}
次に、テストは次のようになります。
[TestFixture]
public class MyTest
{
private TestCaseData[] propertyCases = new[]
{
new TestCaseData(
"First",
(Func<MyClass, string>) (obj => obj.First),
(Action<MyClass, string>) ((obj, newVal) => obj.First = newVal)),
new TestCaseData(
"Second",
(Func<MyClass, string>) (obj => obj.Second),
(Action<MyClass, string>) ((obj, newVal) => obj.Second = newVal)),
new TestCaseData(
"Third",
(Func<MyClass, string>) (obj => obj.Third),
(Action<MyClass, string>) ((obj, newVal) => obj.Third = newVal))
};
[Test]
[TestCaseSource("propertyCases")]
public void Test(string description, Func<MyClass, string> getter, Action<MyClass, string> setter)
{
var obj = new MyClass();
setter(obj, "42");
var actual = getter(obj);
Assert.That(actual, Is.EqualTo("42"));
}
}
いくつかの注意事項:
1。未使用の文字列の説明は、テストケースがNUnitテストランナーUIまたはResharperを介して実行されるときに、テストケースを区別するための最初のパラメーターとして渡されます。
2.テトケースは独立しており、First
プロパティのテストが失敗した場合でも、他の2つのテストが実行されます。
3. NUnitテストランナーUIまたはResharperを介して、1つのテストケースのみを個別に実行できます。
だから、あなたのテストはきれいで乾いている:)