VS2005中单元测试自定义异常的方法
项目中我们继承.net系统异常类做成了一个自定义的异常类:WPSYSException
在实际程序中发现异常情况时,需要构造并抛出此类异常时,代码如下:
使用Vs2005作单元测试时,测试代码应写为以下方式,方可测试程序抛出的异常是否正确:
即,注意在测试方法头加上次属性
[ExpectedException(typeof(WPSYSException), "输入数组为空")]
WPSYSException:自定义异常类
输入数组为空:异常中的信息
因WPSYSException为自定义的异常类,所在在测试工程中需要引用包含次异常类的dll或者加入代码
此前用以下方式也可实现指定错误信息的正确性测试,但不如上述方法规范:
在实际程序中发现异常情况时,需要构造并抛出此类异常时,代码如下:
//如果输入数组为空,报异常
if ((inDoubleArray == null) || (inDoubleArray.Length == 0))
{
//抛出异常
throw new WPSYSException(
null,
null,
ProgID,
strErrPos,
"输入数组为空",
"申请的错误号常量"
);
}
if ((inDoubleArray == null) || (inDoubleArray.Length == 0))
{
//抛出异常
throw new WPSYSException(
null,
null,
ProgID,
strErrPos,
"输入数组为空",
"申请的错误号常量"
);
}
使用Vs2005作单元测试时,测试代码应写为以下方式,方可测试程序抛出的异常是否正确:
/// <summary>
///ToOneArray (double[]) 的测试(输入数组为空)
///</summary>
[TestMethod()]
[ExpectedException(typeof(WPSYSException), "输入数组为空")]
public void ToOneArrayTest_e1()
{
double[] inDoubleArray = null;
double[] expected = null;
double[] actual;
actual = WP.SEV001.COM.SYS.S000C11006.ToOneArray(inDoubleArray);
}
///ToOneArray (double[]) 的测试(输入数组为空)
///</summary>
[TestMethod()]
[ExpectedException(typeof(WPSYSException), "输入数组为空")]
public void ToOneArrayTest_e1()
{
double[] inDoubleArray = null;
double[] expected = null;
double[] actual;
actual = WP.SEV001.COM.SYS.S000C11006.ToOneArray(inDoubleArray);
}
即,注意在测试方法头加上次属性
[ExpectedException(typeof(WPSYSException), "输入数组为空")]
WPSYSException:自定义异常类
输入数组为空:异常中的信息
ExpectedExceptionAttribute (Type, String) |
因WPSYSException为自定义的异常类,所在在测试工程中需要引用包含次异常类的dll或者加入代码
此前用以下方式也可实现指定错误信息的正确性测试,但不如上述方法规范:
/// <summary>
///ToOneArray (double[]) 的测试(输入数组为空)
///</summary>
[TestMethod()]
public void ToOneArrayTest_e1()
{
double[] inDoubleArray = null;
double[] expected = null;
double[] actual;
string strErrorInfo = "输入数组为空";
try
{
actual = DoubleArrayToOne.ToOne.ToOneArray(inDoubleArray);
}
catch (System.Exception ex)
{
Assert.AreEqual(ex.Message, strErrorInfo);
}
}
///ToOneArray (double[]) 的测试(输入数组为空)
///</summary>
[TestMethod()]
public void ToOneArrayTest_e1()
{
double[] inDoubleArray = null;
double[] expected = null;
double[] actual;
string strErrorInfo = "输入数组为空";
try
{
actual = DoubleArrayToOne.ToOne.ToOneArray(inDoubleArray);
}
catch (System.Exception ex)
{
Assert.AreEqual(ex.Message, strErrorInfo);
}
}