nUnit Assert.Throws TestCase属性

时间:2017-03-29 14:34:22

标签: c# unit-testing nunit

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

[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属性来执行此操作?

2 个答案:

答案 0 :(得分:3)

你可以检查

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

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

答案 1 :(得分:1)

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

  1. 在单元测试中避免使用条件逻辑。
  2. 单独的测试会抛出那些不会抛出异常的测试。
  3. 因此,用于断言异常的新的独立测试应该或多或少看起来像:

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