Pau*_*ell 34 unit-testing mstest visual-studio
鉴于此测试夹具:
[TestClass]
public class MSTestThreads
{
[TestMethod]
public void Test1()
{
Trace.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
[TestMethod]
public void Test2()
{
Trace.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
}
Run Code Online (Sandbox Code Playgroud)
使用MSTest通过Visual Studio或命令行运行测试会打印两个不同的线程号(但它们仍然按顺序运行).
有没有办法强制MSTest使用单个线程运行它们?
Bar*_*zKP 21
我用锁定解决了这个问题:
public static class IntegrationTestsSynchronization
{
public static readonly object LockObject = new object();
}
Run Code Online (Sandbox Code Playgroud)
[TestClass]
public class ATestCaseClass
{
[TestInitialize]
public void TestInitialize()
{
Monitor.Enter(IntegrationTestsSynchronization.LockObject);
}
[TestCleanup]
public void TestCleanup()
{
Monitor.Exit(IntegrationTestsSynchronization.LockObject);
}
//test methods
}
// possibly other test cases
Run Code Online (Sandbox Code Playgroud)
这当然可以提取到基础测试类并重用.
det*_*pro 12
我已经花了不少时间让MSTest在一个大型项目中以单线程模式运行,这个项目大量使用nHibernate并且它不是线程安全的(不是问题,它只是没有)ISession.
我们花了更多时间编写代码来支持MSTest的多线程特性,因为 - 就我和我的团队知识而言 - 不可能在单线程模式下运行MSTest.
| 归档时间: |
|
| 查看次数: |
15689 次 |
| 最近记录: |