用TestInitialize和TestCleanup标记的类不执行

我一直在努力,希望这会帮助别人。

在使用MsTest创buildunit testing的同时,我发现我在每个testing中重复相同的代码,并且发现了几个方便的属性( TestInitializeTestCleanupClassInitializeClassCleanup )。

假设用这些属性标记方法时,应该自动执行(每次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

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.classinitializeattribute.aspx

示例代码显示了如何使用TestInitialize,ClassInitialize和AssemblyInitialize。

我也有这个问题 – 由于我误解了如何调用方法 – 解决了这个问题:让您的testinginheritance自包含TestInitialize和TestCleanup方法的类。