2017-08-16 65 views
2

我的一些測試使用靜態類,這使得無法完全隔離地運行它們。按順序執行使用相同靜態對象的測試

因此,我想知道是否有辦法告訴xunit一些測試(在不同的測試類中)的順序?

NCrunch具有[ExclusivelyUses("TheStaticClass")]屬性,我正在尋找類似的東西(以便構建服務器不會失敗)。

+0

不能完全確定這是否會工作,但接受了這個問題的答案可能會幫助https://stackoverflow.com/questions/973556/unittesting-static-classes – swatsonpicken

+0

@swatsonpicken遺憾的是沒有復位方法可影響其他同時運行的測試。 – jgauffin

回答

1

您可以使用xunit Collection屬性。當我有一個不能同時使用的單例類時,我已經使用它。同一個集合中的測試不會並行運行。請參見https://xunit.github.io/docs/running-tests-in-parallel.html中的「自定義測試集合」一節。

[Collection("Our Test Collection #1")] 
public class TestClass1 
{ 
    [Fact] 
    public void Test1() 
    { 
     Thread.Sleep(3000); 
    } 
} 

[Collection("Our Test Collection #1")] 
public class TestClass2 
{ 
    [Fact] 
    public void Test2() 
    { 
     Thread.Sleep(5000); 
    } 
} 

集合中的所有測試運行後,使用自定義收集夾具進行自定義清理也可能是一個好主意。 https://xunit.github.io/docs/shared-context.html#collection-fixture