单元测试
201421123056 201421123057
题目描述:
上一周大家为四则运算程序设计了2-3个新功能,本次在隔了一周之后,我们循序渐进地进阶。本次目标:
把计算模块提取出来,单独创建一个类。
针对提取出来的计算类的接口函数做单元测试
a.需求分析:测试上有哪些详细的需求?
测试加法是否能正确工作;
测试加减乘除功能;
测试计算类对于各种题目格式的支持。
b. 设计测试框架, 模拟测试数据:
(1) 请给出计算模块的测试用例及运行结果
public class UnitTest1
{
[TestMethod]
public void TestArgException()
{
MyMath.FigureUp("1++2");
MyMath.FigureUp("10000+32768");
MyMath.FigureUp("248÷0");
}
[TestMethod]
public void TestAdd()
{
MyMath.FigureUp("1+2");
MyMath.FigureUp("1+321");
if(MyMath.FigureUp("232+675") != "907") throw new Exception();
}
[TestMethod]
public void TestArithmetic()
{
if (MyMath.FigureUp("10+27") != "37") throw new Exception();
if (MyMath.FigureUp("13-321") != "-308") throw new Exception();
if (MyMath.FigureUp("232*675") != "156600") throw new Exception();
if (MyMath.FigureUp("675÷232") != "675/232") throw new Exception();
}
}
}
(2) 描述测试过程中遇到的问题以及解决的方案。
调用计算函数时因为函数定义的时候不规范,导致测试时不知是他通过返回的值还是函数内部直接抛出异常来说明调用错误。
解决方法:明确规定调用函数出现错误时以何种方式提示调用者。
(3) 请展示上面描述的单元测试的每个环节。
通过单元测试代码,测试加法是否能正确工作;
[TestMethod]
public void TestAdd()
{
MyMath.FigureUp("1+2+1");
MyMath.FigureUp("1+321+3");
if(MyMath.FigureUp("232+675+10") != "917") throw new Exception();
}
通过单元测试代码,测试加减乘除功能。
[TestMethod] public void TestArithmetic() { if (MyMath.FigureUp("10+270+10") != "290") throw new Exception(); if (MyMath.FigureUp("13-321+8") != "-300") throw new Exception(); if (MyMath.FigureUp("1+232*675") != "156601") throw new Exception(); if (MyMath.FigureUp("675÷232") != "675/232") throw new Exception(); }
通过单元测试代码,测试计算类对于各种参数的支持:
a.输入是有错误的,例如 “1 ++ 2”,
此时抛出异常
b. 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,
此时抛出异常
c. 或者是 “ 248 / 0” 怎么办?
此时抛出异常
[TestMethod]
public void TestArgException()
{
MyMath.FigureUp("1++2");
MyMath.FigureUp("10000+32768");
MyMath.FigureUp("248÷0");
}
d. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?
通过函数抛出的异常来提示调用者出错了
e. 那么如果真的计算结果是 “-1” 又怎么处理呢?
可以通过返回“false”来提示调用出错,其他返回正常的结算结果
d. 在隔了一周之后再看之前的代码,是否更能体会到下面这些东西
(1)良好的设计
良好的设计对项目是十分重要的,好的设计能减少工作量。
(2)编码规范
编码的规范性仅可以方便队友阅读,便于理解。
(3)必要的注释
必要的注释会提高代码的可读性。
c. 小结与感受:通过测试,是否有效发现了程序计算模块的问题,并给予改进?
这次的实验,在抽出类计算模块的时候遇到了一些问题,但最后还是解决了。这次实验也体会到了代码规范的重要性,尤其是在找错修该的时候。
汉堡包:
小伙伴的编程能力强,做事严谨,有优秀的团队精神。
coding地址:
https://coding.net/u/GitForever/p/Arithmetic/git/blob/master/test.cs