标有TestInitialize和TestCleanup的类未执行

Ste*_*Kok 41 c# mstest vs-unit-testing-framework

我一直在努力争取这个,希望它会帮助别人.

虽然创建使用MSTEST单元测试我发现我在每个测试重复相同的码,并发现了几个方便的属性(的TestInitialize,TestCleanup,ClassInitialize,和ClassCleanup).

据推测,当您使用这些属性之一标记方法时,它应该自动执行(在每次测试之前,在每次测试之后,在所有测试之前,以及在所有测试之后).令人沮丧的是,这没有发生,我的测试失败了.如果从标有TestMethodattribute 的类中直接调用这些方法,则测试成功.显然他们不是自己执行的.

以下是我使用的一些示例代码:

[TestInitialize()]
private void Setup()
{
    _factory = new Factory();
    _factory.Start();
}
Run Code Online (Sandbox Code Playgroud)

那为什么不执行?

Ste*_*Kok 103

诀窍是制作这些方法public:

[TestInitialize()]
public void Setup()
{
    _factory = new Factory();
    _factory.Start();
}
Run Code Online (Sandbox Code Playgroud)

当他们private自己不执行.


Ste*_*Kok 10

TestInitialize和TestCleanup在所有测试之前和之后运行,而不是在每个测试之前和之后运行.

这是错误的,请参阅此链接: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.