Geo*_*uer 24 configuration mstest
好的,这很烦人.
MSTest同时执行所有测试,导致其中一些测试失败.不,这不是因为我的测试很脆弱且容易构建顺序,而是因为这是一个演示项目,我在其中使用从文件运行的Db4o对象数据库.
所以我有几个DataAccess测试检查我的存储库是否正常工作并且繁荣,MSTest爆炸了.由于它试图同时运行所有测试,当测试尝试访问数据库文件而其他测试正在使用它时会出现错误.
谁能想到快速解决这个问题?我不想抛弃MSTest(好吧,我只是做另一个故事),我确定他不想运行一个完整的数据库服务,所以我会采取任何方式强迫MSTest不要同时运行或欺骗打开文件.
有人有主意吗?
tva*_*son 33
您可能想尝试使用Monitor并输入TestInitialize并退出TestCleanup.如果您的测试类都依赖于外部文件,则需要为所有测试类使用单个锁定对象.
public static class LockClass
{
public static object LockObject = new object();
}
...
[TestInitialize]
public void TestSetup()
{
Monitor.Enter(LockClass.LockObject);
}
[TestCleanup]
public void TestCleanup()
{
Monitor.Exit(LockClass.LockObject);
}
Run Code Online (Sandbox Code Playgroud)
这应该强制所有测试按顺序运行,只要所有测试通过/失败,它们就应该运行.但是,如果它们中的任何一个抛出了意外的异常,那么所有其余的都会挂起,因为退出代码不会为爆炸的测试运行.
我尝试过以这种方式使用锁.然而,我所经历的是,VS2010 默认情况下不会并行执行测试,而是在一个线程中按顺序执行它们.(然而,可以打开并行执行.但这不会完全阻止问题)
我觉得非常令人不安的是,顺序执行将以任意顺序进行,甚至跨测试类!
例如,执行顺序可能如下所示:
我不明白为什么MS会这样做.其他UnitTest框架(例如JUnit)按类别执行测试方法.否则将会有一些SetUp/TearDown方法的交错,这将导致描述的混乱......
有没有人知道如何防止MSTest在测试类之间跳跃?(目前我使用Resharpers测试运行器,其行为符合预期,在继续下一个类之前执行一个classe的所有测试方法)
| 归档时间: |
|
| 查看次数: |
8582 次 |
| 最近记录: |