hol*_*ard 3 c# unit-testing try-catch
我正在为一个应用程序进行单元测试,该应用程序有一个构造函数,它将三个值作为参数.数字应为0或更高,现在我正在编写一个单元测试,用于抛出异常的构造函数,如果不是这样的话.
我无法弄清楚的是我如何在"断言"之后写什么来确定这一点,以便在非法数字传递给构造函数时测试通过.提前致谢.
编辑:我正在使用MSTest框架
public void uniqueSidesTest2()
{
try {
Triangle_Accessor target = new Triangle_Accessor(0, 10, 10);
}
catch (){
Assert // true (pass the test)
return;
}
Assert. // false (test fails)
}
Run Code Online (Sandbox Code Playgroud)
//从代码中......
public Triangle(double a, double b, double c) {
if ((a <= 0) || (b <= 0) || (c <= 0)){
throw new ArgumentException("The numbers must higher than 0.");
}
sides = new double[] { a, b, c };
}
Run Code Online (Sandbox Code Playgroud)
首先,你应该抛出一个ArgumentOutOfRangeException而不仅仅是一个ArgumentException.
其次,你的单元测试应该期望抛出异常,如下所示:
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public static void MyUnitTestForArgumentA()
{
...
}
Run Code Online (Sandbox Code Playgroud)
因此,您需要创建单独的单元测试 - 每个参数一个 - 测试当参数超出范围时方法是否抛出正确的异常.
| 归档时间: |
|
| 查看次数: |
4217 次 |
| 最近记录: |