MSTest 的 xUnit 等价物 Assert.Inconclusive

xUnit Equivalent of MSTest's Assert.Inconclusive

以下 MSTest 代码的 xUnit 等效项是什么:

Assert.Inconclusive("Reason");

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

一种方法是在 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);
}

当 运行:

时给出这个结果

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

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

    // Normal test code
}

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

归功于

我通常会这样做:

throw new Exception("Inconclusive");

是的,它显示为一个失败的测试,但至少你可以在某些不确定的情况下在测试中提出这个问题。

我没有使用其他答案中提到的 SkippableFact 功能,但这对我来说听起来是个不错的解决方案。