VS2005中单元测试自定义异常的方法

项目中我们继承.net系统异常类做成了一个自定义的异常类:WPSYSException
在实际程序中发现异常情况时,需要构造并抛出此类异常时,代码如下:
            //如果输入数组为空,报异常
            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);
        }

即,注意在测试方法头加上次属性
[ExpectedException(typeof(WPSYSException), "输入数组为空")]
WPSYSException:自定义异常类
输入数组为空:异常中的信息

ExpectedExceptionAttribute (Type, String) 用预期的异常类型以及描述此异常的消息来初始化 ExpectedExceptionAttribute 类的新实例。

因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);
            }
        }

posted on 2007-12-13 13:23  网际浪人  阅读(1313)  评论(0编辑  收藏  举报