2016-01-05 45 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