xUnit等于MSTest的Assert.Inconclusive

Muh*_*eed 22 unit-testing assert mstest xunit assertion

什么是以下MSTest代码的xUnit等价物:

Assert.Inconclusive("Reason");
Run Code Online (Sandbox Code Playgroud)

这给出了黄色测试结果,而不是通常的绿色或红色.我想断言由于某些条件而无法运行测试,并且在满足这些条件后应该重新运行测试.

Ant*_*ttu 17

在库中实现某些东西之前,最好的办法就是使用Xunit.SkippableFact

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

    // Normal test code
}
Run Code Online (Sandbox Code Playgroud)

这至少会使它在列表中显示为黄色忽略的测试用例.

归功于/sf/answers/2511005521/


tes*_*ern 11

一种方法是使用或属性中的Skip参数.FactTheory

[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);
}
Run Code Online (Sandbox Code Playgroud)

运行时会得到以下结果:

在此输入图像描述

  • 我不喜欢这个.这不意味着任何异常或失败都意味着跳过测试吗?我希望这种能力在某些情况下只能是不确定的,否则就会失败...... (16认同)
  • 这不一样.`Assert.Inconclusive()`不仅在测试尚未实现时使用,而且在测试的编配部分出现错误时使用.截至目前,没有替代品.另请参见[xUnit Issue#1070](https://github.com/xunit/xunit/issues/1070) (7认同)
  • 此外,将 Skip 添加到 Theory 会跳过所有测试(对于所有“理论”),而不仅仅是单次运行。 (2认同)