【问题标题】:xUnit error messages in the Visual Studio RunnerVisual Studio Runner 中的 xUnit 错误消息
【发布时间】:2015-05-26 13:18:46
【问题描述】:

我正在使用 xUnit 理论将相关输入分组到同一个测试中,例如:

[Theory]
[InlineData("fg00123 kj 56", "123")]
[InlineData("123", "123")]
public void NormalizeString(string input, string expectedOutput) {
    Assert.Equal(expectedOutput, MethodToTest(input));
}

但如果第一次失败,我只能看到预期输出和实际输出。我意识到我可以将 expectedOutput 更改为独特的东西,但是测试几个都给出相同输出的输入并不是不合理的。有没有办法在 Visual Studios 的 testrunner 中显示导致测试失败的输入?

【问题讨论】:

    标签: c# visual-studio unit-testing xunit.net


    【解决方案1】:

    您可以使用具有用户消息参数的 Assert.True:

    var actualOutput = MethodToTest(input); Assert.True(expectedOutput==actualOutput, string.Format("for input {0} expected {1} but got {2}", input, expectedOutput, actualOutput));

    【讨论】:

    • 这非常适合我的用例,并且比我将输入字符串嵌入到 Assert.Equal 的字符串中的 hacky 方法要好得多。但它仍然不理想,因为它很难与 Asset.Throws 一起使用。
    • 对于 Assert.Throws,如果您可以让测试代码将输入作为参数传递给抛出的异常,那么您可以使用 Assert.Throws 的 paramName 参数使特定的测试失败理论输入,例如,Assert.Throws(input, throwingCode);
    • 如果出现用例,我会记住这一点。感谢您的帮助。
    • Xunit.net 适合极简主义和自我记录代码,他们只在更一般的断言上留下了用户信息。请参阅此处的讨论:github.com/xunit/xunit/issues/350
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2015-02-07
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多