【问题标题】:xUnit.net and Debug.AssertxUnit.net 和 Debug.Assert
【发布时间】:2014-05-05 14:15:29
【问题描述】:

当被测代码触发失败的System.Diagnostics.Debug.Assert 时,有谁知道如何阻止xUnit.Net 抛出Xunit.SDK.TraceAssertException

我经常在 DEBUG 模式下使用警卫来提醒其他开发人员他们正在错误地使用 API。然而,随着 xUnit.Net 抛出这个异常,它破坏了我的单元测试。

【问题讨论】:

    标签: c# unit-testing assertions xunit.net


    【解决方案1】:

    正如this answer 所引用的,您应该能够将以下内容添加到您的“App.config”单元测试文件中:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.diagnostics>
            <assert assertuienabled="false"/>
        </system.diagnostics>
    </configuration>
    

    【讨论】:

      【解决方案2】:

      我通常只会将调试断言用于内部/私有代码,因为变异状态不会产生任何可能的副作用。这种代码不会在我的公共 API 中公开,因此我不会对其进行单元测试。

      如果您在制造状态下会在测试中触发调试断言异常,我认为您无法避免 xunit 断言所遇到的问题,因此如果打算测试公共 api,我不会使用 @ 987654321@ 而是使用参数验证类型异常,如果目的是测试私有内部代码,有大量文献表明这不是一个好主意。

      【讨论】:

      • 不确定我是否完全赞同“永远不能测试私有代码”的逻辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2011-03-02
      相关资源
      最近更新 更多