0

この「質問」は、同じ問題に遭遇した他の人に役立つことを期待して、私が何度か頭を悩ませた奇妙な MSTest の動作のドキュメントです。次のテストを検討してください。

[TestClass]
public class SomeTest {
    private List<int> _list;

    [TestInitialize]
    public void SetUp() {
        DoSomething();
        _list = new List<int>();
    }

    [TestMethod]
    public void SomeTestMethod() {
        _list.Add(42);
        ...
    }
}

それを実行すると、オンラインで生成System.NullReferenceException: Object reference not set to an instance of an object.され_list.Add(42);ます。のように見えますSetUp()が、正しいpublic void署名と[TestInitialize]属性がありますが、呼び出されていません。どうしたの?

4

1 に答える 1

0

この場合、さらに調査したところDoSomething()、例外がスローされていたことがわかりました。理解できない理由により、MSTest (少なくとも ReSharper を使用して Visual Studio から呼び出された場合)は、メソッドによってスローされた例外を飲み込み[TestInitialize]、テストに失敗することなくテスト メソッドを続行します

(誰かがこの動作の理論的根拠またはそれをオフにする方法を説明できれば、私は感謝しています。)

于 2013-01-18T15:05:08.383 に答える