这个“问题”是一个奇怪的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]
属性未被调用。发生了什么事?
答案 0 :(得分:0)
在这种情况下,进一步调查显示DoSomething()
正在抛出异常。由于我无法理解的原因,MSTest(至少从使用ReSharper的Visual Studio调用时)吞下[TestInitialize]
方法抛出的异常,并继续使用测试方法,而不会使测试失败。
(如果有人能解释这种行为的理由或如何关闭它,我将不胜感激。)