gpt4 book ai didi

c# - 使用 Assert 测试异常以确保它们将被抛出的最佳方法

转载 作者:IT王子 更新时间:2023-10-29 03:38:30 25 4
gpt4 key购买 nike

您认为这是测试异常的好方法吗?有什么建议吗?

Exception exception = null;
try{
//I m sure that an exeption will happen here
}
catch (Exception ex){
exception = ex;
}

Assert.IsNotNull(exception);

我正在使用 MS 测试。

最佳答案

我使用了几种不同的模式。大多数情况下,我会在预期会出现异常时使用 ExpectedException 属性。这足以满足大多数情况,但是,在某些情况下这还不够。异常可能无法捕获——因为它是由反射调用的方法抛出的——或者我可能只是想检查其他条件是否成立,比如事务已回滚或某些值仍已设置。在这些情况下,我将其包装在一个 try/catch block 中,该 block 期望确切的异常,如果代码成功则执行 Assert.Fail 并捕获一般异常以确保不会引发不同的异常。

第一种情况:

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void MethodTest()
{
var obj = new ClassRequiringNonNullParameter( null );
}

第二种情况:

[TestMethod]
public void MethodTest()
{
try
{
var obj = new ClassRequiringNonNullParameter( null );
Assert.Fail("An exception should have been thrown");
}
catch (ArgumentNullException ae)
{
Assert.AreEqual( "Parameter cannot be null or empty.", ae.Message );
}
catch (Exception e)
{
Assert.Fail(
string.Format( "Unexpected exception of type {0} caught: {1}",
e.GetType(), e.Message )
);
}
}

关于c# - 使用 Assert 测试异常以确保它们将被抛出的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com