xUnit等效于MSTest Assert.Inconclusive

问题描述 投票:19回答:3

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

Assert.Inconclusive("Reason");

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

unit-testing mstest assert xunit assertion
3个回答
10
投票

一种方法是在SkipFact属性中使用Theory参数。

[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


14
投票

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

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

    // Normal test code
}

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

归功于https://stackoverflow.com/a/35871507/537842


0
投票

我通常做这样的事,

throw new Exception("Inconclusive");

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

我没有使用上面提到的skippablefact功能,但这听起来像是一个很好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.