22

TestCaseSource属性を試してみました。1つの問題:sourceName文字列が無効な場合、テストは失敗するのではなく無視されます。sourceメソッドの名前が変更され、sourceName文字列が更新されない場合、これは非常に悪いことです。その後、テストで提供されたカバレッジが失われます。sourceNameが無効な場合にテストが失敗するように、NUnitの動作を変更する方法はありますか?

4

3 に答える 3

7

これは NUnit 2.6.2 で解決されています。Type(実装する必要があるIEnumerable);を取る属性の新しいコンストラクターがあります。「データソースを指定するために文字列を使用しないため、リファクタリングが容易になるため、他の形式よりも優先して使用することをお勧めします。」(ドキュメンテーションより。)

これには、テスト ランナーが最新の NUnit をサポートしている必要があります。

非常に基本的な例 (詳細については、上記のドキュメント リンクを参照してください):

public class TestDataProvider : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        return new List<int>{ 2, 4, 6 }.GetEnumerator();
    }
}

[TestFixture]
public class MyTests
{
    [TestCaseSource(typeof(TestDataProvider))]
    public void TestOne(int number)
    {
        Assert.That(number % 2, Is.EqualTo(0));
    }
}
于 2013-04-16T22:45:31.820 に答える