【问题标题】:nUnit Assert.Throws TestCase attributenUnit Assert.Throws TestCase 属性
【发布时间】:2017-03-29 14:34:21
【问题描述】:

我有一个这样的测试方法:

[TestCase(16486, "BobBank2.site16486.1", "16486.1")]
[TestCase(16441, "BobBank2.site16441.1", "16441.1")]
[TestCase(16443, "BobBank2.site16443.1", "16443.1")]
public async Task CheckUserAccountLinkStatusTest(int providerId, string username, string userKey)

我需要确保第一种情况 (16486) 总是会引发错误。是否可以修改 TestCase 属性来做到这一点?

【问题讨论】:

    标签: c# unit-testing nunit


    【解决方案1】:

    你可以检查

    if(providerId==16486)
    {
        Assert.Throws(...
    }
    

    但最好有两个单独的测试,一个在预期出现异常时检查异常,另一个在不应该出现异常时断言没有异常。

    【讨论】:

      【解决方案2】:

      虽然@Connel.O'Donnell 解决方案有效,但我建议:

      1. 在单元测试中避免条件逻辑。
      2. 将抛出异常的测试与不抛出异常的测试分开。

      因此,用于断言异常的新的、单独的测试应该或多或少看起来像:

      [TestCase(16486, "BobBank2.site16486.1", "16486.1")]
      public async Task CheckUserAccountLinkStatusTest_ThrowsException(int providerId, string username, string userKey)
      {
          // ...
          Assert.That(() => { /* ... */  }, Throws.Exception);
      }
      

      【讨论】:

        猜你喜欢
        • 2013-02-07
        • 2016-02-27
        • 2015-01-26
        • 2016-05-05
        • 2012-03-03
        • 1970-01-01
        • 1970-01-01
        • 2018-07-05
        • 1970-01-01
        相关资源
        最近更新 更多