Mat*_*att 9 integration-testing unit-testing mstest visual-studio-2008
我认为这些属性的全部目的是每个程序集只运行一次.我有一个简单的类如下:
[TestClass]
public class AssemblyIntegrationTestSetup
{
public AssemblyIntegrationTestSetup() { }
public TestContext TestContext { get; set; }
[AssemblyInitialize]
public static void SetupIntegrationTests(TestContext context)
{
WindowsServiceService.Instance.StartService("Distributed Transaction Coordinator");
}
[AssemblyCleanup]
public static void TeardownIntegrationTests()
{
WindowsServiceService.Instance.StopService("Distributed Transaction Coordinator");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行测试套件时,程序集级Initialize和Cleanup方法执行两次.以下是关于我的环境的详细信息:
观察到的行为类似于:
AssemblyInitialize
Class1.TestInitialize
Class1.TestMethod1
Class1.TestCleanup
AssemblyInitalize <-- //This shouldn't be happening right?
Class2.TestInitialize
Class2.TestMethod1
Class2.TestCleanup
Class2.TestInitialize
Class2.TestMethod2
Class2.TestCleanup
Class5.TestInitialize
Class5.TestMethod1
Class5.TestCleanup
Class7.TestInitialize
Class7.TestMethod1
Class7.TestCleanup
//More random bouncing around then...
AssemblyCleanup
AssemblyCleanup <-- //This shouldn't be happening right?
Run Code Online (Sandbox Code Playgroud)
来自MSDN Library文章:
重要
不应在ASP.NET单元测试上使用此属性,即使用[HostType("ASP.NET")]属性进行的任何测试.由于IIS和ASP.NET的无状态特性,每次测试运行时可能会多次调用使用此属性修饰的方法.
您可以在测试跑步者中调整很少的旋钮.我只想用一个计数器解决这个问题:
private int InitCount;
[AssemblyInitialize]
public static void SetupIntegrationTests(TestContext context)
{
if (InitCount++ == 0) {
WindowsServiceService.Instance.StartService("Distributed Transaction Coordinator");
}
}
[AssemblyCleanup]
public static void TeardownIntegrationTests()
{
if (--InitCount == 0) {
WindowsServiceService.Instance.StopService("Distributed Transaction Coordinator");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5487 次 |
| 最近记录: |