2
我的一些測試使用靜態類,這使得無法完全隔離地運行它們。按順序執行使用相同靜態對象的測試
因此,我想知道是否有辦法告訴xunit一些測試(在不同的測試類中)的順序?
NCrunch具有[ExclusivelyUses("TheStaticClass")]
屬性,我正在尋找類似的東西(以便構建服務器不會失敗)。
我的一些測試使用靜態類,這使得無法完全隔離地運行它們。按順序執行使用相同靜態對象的測試
因此,我想知道是否有辦法告訴xunit一些測試(在不同的測試類中)的順序?
NCrunch具有[ExclusivelyUses("TheStaticClass")]
屬性,我正在尋找類似的東西(以便構建服務器不會失敗)。
您可以使用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
不能完全確定這是否會工作,但接受了這個問題的答案可能會幫助https://stackoverflow.com/questions/973556/unittesting-static-classes – swatsonpicken
@swatsonpicken遺憾的是沒有復位方法可影響其他同時運行的測試。 – jgauffin