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 回答