用TestInitialize和TestCleanup标记的类不执行
我一直在努力,希望这会帮助别人。
在使用MsTest创buildunit testing的同时,我发现我在每个testing中重复相同的代码,并且发现了几个方便的属性( TestInitialize
, TestCleanup
, ClassInitialize
和ClassCleanup
)。
假设用这些属性标记方法时,应该自动执行(每次testing之前,每次testing之后,所有testing之前,以及所有testing之后)。 令人沮丧的是,这并没有发生,我的testing失败了。 如果直接从标有TestMethod
属性的类中调用这些方法,则testing成功。 很明显,他们并没有自己执行。
以下是我使用的一些示例代码:
[TestInitialize()] private void Setup() { _factory = new Factory(); _factory.Start(); }
那么为什么这不是执行?
诀窍是public
这些方法:
[TestInitialize()] public void Setup() { _factory = new Factory(); _factory.Start(); }
当他们是private
他们不执行。
TestInitialize和TestCleanup在所有testing之前和之后运行,而不是在每个testing之前和之后运行。
这是错误的,请参阅此链接: http : //social.msdn.microsoft.com/Forums/en-US/vststest/thread/85fb6549-cbaa-4dbf-bc3c-ddf1e4651bcf
另请参阅MSDN
示例代码显示了如何使用TestInitialize,ClassInitialize和AssemblyInitialize。
我也有这个问题 – 由于我误解了如何调用方法 – 解决了这个问题:让您的testinginheritance自包含TestInitialize和TestCleanup方法的类。