![](/img/trans.png)
[英]how do I prevent resharper 8 from running parallel tests with nunit?
[英]How can I prevent my NUnit tests from running in parallel sometimes
我正在使用Monodevelop中包含的NUnit測試運行程序。 我有2個測試必須與靜態資源進行交互,因此我需要它們以串行方式而不是並行方式運行。 我試過使用類似
static string Locker="foo";
[Test]
public void Test1()
{
lock(Locker)
{
//....
}
}
[Test]
public void Test2()
{
lock(Locker)
{
//....
}
}
不過,這似乎不起作用。 還有其他方法嗎?
當真正需要時,我正在使用這種方法(我認為這是一個壞主意):
using System.Threading;
private ManualResetEvent FixtureHandle = new ManualResetEvent(true);
[SetUp]
public void SetUp()
{
FixtureHandle.WaitOne();
}
[TearDown]
public void TearDown()
{
FixtureHandle.Set();
}
[Test]
public void Test1()
{
//only test
}
[Test]
public void Test2()
{
//only test
}
不了解Monodevelop,但nunit控制台具有命令行參數 / nothread
我認為這應該與Monodevelop類似
與其直接使用靜態資源,不如將其提取到依賴項中並對其進行模擬(使用moq或類似方法)。
這樣一來,您就可以編寫實際的單元測試,從而隔離要嘗試測試的特定代碼段,而不必擔心外部上下文。
為了連續運行測試,最好使用Order屬性:
static string Locker="foo";
[Test, Order(1)]
public void Test1()
{
lock(Locker)
{
//....
}
}
[Test, Order(2)]
public void Test2()
{
lock(Locker)
{
//....
}
}
您錯過了單元測試的重點。 單元測試必須在各個方面都是獨立的。
這意味着執行順序不得影響單元測試結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.