web-dev-qa-db-ja.com

MSTestAssert.Inconclusiveと同等のxUnit

次のMSTestコードに相当するxUnitは何ですか?

Assert.Inconclusive("Reason");

これにより、通常の緑や赤ではなく、黄色のテスト結果が得られます。特定の条件が原因でテストを実行できなかったこと、およびそれらの条件が満たされた後にテストを再実行する必要があることを主張したいと思います。

24

1つの方法は、SkipまたはFact属性内で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

11
testpattern

ライブラリに何かが実装されるまでできる最善のことは、 Xunit.SkippableFact を使用することです。

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

    // Normal test code
}

これにより、少なくともリストに黄色の無視されたテストケースとして表示されます。

クレジットは https://stackoverflow.com/a/35871507/537842 に行きます

19
Anttu

私は通常このようなことをします、

throw new Exception("Inconclusive");

はい、それは失敗したテストとして表示されますが、少なくとも、特定の決定的でない場合のテストでこれを上げることができます。

私は上記のskippablefact機能を使用していませんが、それは私にとって素晴らしい解決策のように思えます。

0
SirClutzz