2016-01-05 43 views
14

什麼的xUnit相當於下面的MSTest代碼:MSTest的的Assert.Inconclusive的xUnit的Equivelant

Assert.Inconclusive("Reason"); 

這給出了一個黃色的測試結果而不是通常的綠色或紅色。我想斷言由於某些條件測試不能運行,並且測試應該在這些條件滿足後重新運行。

+0

在1.x版本中沒有,您使用的是哪個版本的xunit? https://xunit.github.io/docs/comparisons.html – jessehouwing

+0

最新版本2.1.0。 –

回答

7

一種方法是使用FactTheory屬性中的Skip參數。

[Fact(Skip = "It's not ready yet")] 
public void ReplaceTokensUnfinished() 
{ 
    var original = ""; 
    var expected = ""; 
    var tokenReplacer = new TokenReplacer(); 
    var result = tokenReplacer.ReplaceTokens(original, _tokens); // (_tokens is initialised in a constructor) 
    Assert.Equal(result, expected); 
} 

運行時,這給出了這樣的結果:

enter image description here

+9

我不喜歡這樣。這是否意味着任何異常或失敗都意味着測試跳過了?我希望能力只能在某些情況下沒有結果,否則失敗...... – Kody

+0

這是正確的,它跳過了測試。聽起來它不能完全滿足你的需求。 xUnit雖然是開源的,但是你可以添加你的功能;) – testpattern

+1

此外,添加跳轉到理論跳過所有測試(對於所有的「理論」),而不僅僅是單次運行。 – Kody

4

一個可以做,直到事情最好的辦法是在圖書館實行的是使用Xunit.SkippableFact

[SkippableFact] 
public void SomeTest() 
{ 
    var canRunTest = CheckSomething(); 
    Skip.IfNot(canRunTest); 

    // Normal test code 
} 

這至少會使其在列表中顯示爲黃色忽略的測試用例。

得分爲https://stackoverflow.com/a/35871507/537842

+0

不適用於.NET Core 2,.NET Standard 2,.NET Framework 4.7 – Kody

+0

您可以給因爲我在一個定位'netcoreapp2.0'的xUnit項目中使用它。 – Anttu

+0

檢查你的依賴關係,它不是爲.NET標準2編譯的。它是用.NET Framework 4.5編譯的。 – Kody