我有一个这样的测试方法:
[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(总是抛出错误。是否可以修改测试用例属性来执行此操作?
你可以
检查
if(providerId==16486)
{
Assert.Throws(...
}
但最好有两个单独的测试,一个在预期时检查异常,另一个在不应该有异常时断言没有异常。
虽然 @Connel.O'Donnell 解决方案有效,但我建议:
- 避免在单元测试中使用条件逻辑。
- 通过在单元测试中使用 if 语句,更容易出现错误。
- 使用逻辑分支来阅读和维护测试更加困难。
- 以下是堆栈溢出主题:为什么要在单元测试中避免条件逻辑以及如何避免?
将引发异常的测试 - 与未引发异常的测试分开。
因此,用于断言异常的新单独测试应或多或少如下所示:
[TestCase(16486, "BobBank2.site16486.1", "16486.1")]
public async Task CheckUserAccountLinkStatusTest_ThrowsException(int providerId, string username, string userKey)
{
// ...
Assert.That(() => { /* ... */ }, Throws.Exception);
}