结对编程2——单元测试
2017-03-29 20:51
197 查看
码市地址:https://git.coding.net/cjz113/jiedui2.git
结对成员:201421123111 201421123113
题目描述:
上一周大家为四则运算程序设计了2-3个新功能,本次在隔了一周之后,我们循序渐进地进阶。本次目标:
把计算模块提取出来,单独创建一个类。
针对提取出来的计算类的接口函数做单元测试。
通过单元测试代码,测试加法是否能正确工作;
通过单元测试代码,测试加减乘除功能。
通过单元测试代码,测试计算类对于各种参数的支持:
题目要求:
结对编程实现上述功能,同样的,在程序正式开发之前,请先预估下PSP每个环节的消耗时间(分钟),并在过程中统计实际耗时(分钟),最后提交PSP表格。依然注意,这个主要是给你们自己看的,不必造假数据。
继续两人结对协作,把编码规范、领航员和驾驶员角色互换做到位。
单元测试:有单元测试保证,有代码覆盖率。
提取计算类:
类定义
整数:
分数:
取最大公约数:
测试用例:
整数计算测试用例:
分数计算测试用例:
最大公约数测试用例:
结果:
我们试了很多次,也问过同学,查了百度,以为是插件问题,也在vs2010、vs2012、vs2013、vs2015都试过,上最终还是没能成功测试
小结与感受:
自学能力真的太重要了,而我明显这方面还很弱,c++的测试以前老师没讲,我们需要自己查资料自己学习,看着很多同学慢慢的都掌握了,测试也在有条不紊的进行,而我们还不知所措,无奈只能向同学求助,按照同学给的教程链接http://www.cnblogs.com/xiehongfeng100/p/4438076.html一步步进行操作,一开始没有注意到要下载UnitTestGenerator工具,一直没办法测试成功,耗了很长时间,后来想起来取下载时,出现了这种情况:
那就先去下载.NETFramework吧,却又出现了这种情况:
。。。
自己下的软件不行,那就用一下同学的软件吧,按照同学耐心指导的步骤做下来,在测试的时候,还是出现了:
这样几个错误,找了好久一直不知道该如何修改。。。
单元测试就这么失败了,经过这次作业,我更加深刻的体会到自己自主解决问题的能力还是非常差的,急需提高啊
结对照片:
PSP:
结对成员:201421123111 201421123113
题目描述:
上一周大家为四则运算程序设计了2-3个新功能,本次在隔了一周之后,我们循序渐进地进阶。本次目标:
把计算模块提取出来,单独创建一个类。
针对提取出来的计算类的接口函数做单元测试。
通过单元测试代码,测试加法是否能正确工作;
通过单元测试代码,测试加减乘除功能。
通过单元测试代码,测试计算类对于各种参数的支持:
题目要求:
结对编程实现上述功能,同样的,在程序正式开发之前,请先预估下PSP每个环节的消耗时间(分钟),并在过程中统计实际耗时(分钟),最后提交PSP表格。依然注意,这个主要是给你们自己看的,不必造假数据。
继续两人结对协作,把编码规范、领航员和驾驶员角色互换做到位。
单元测试:有单元测试保证,有代码覆盖率。
提取计算类:
类定义
:
classcla
{
public:
stringinteger(intop,intx,inty);
stringfraction(intop,inta,intb,intc,intd);
staticintmaxNumber(intk,intl);
};
整数:
stringinteger(intop,intx,inty)
{
charOperator[]={'+','-','*','/'};
stringresult;
intelement,denominator;//定义答案分子、分母
intmaxNum;//定义公约数
charanswer[10];//答案
if(Operator[op]==Operator[0])
{
intn;
n=x+y;
result=sprintf_s(answer,"%d",n);
}
else
if(Operator[op]==Operator[1])
{
intn;
n=x-y;
result=sprintf_s(answer,"%d",n);
}
else
if(Operator[op]==Operator[2])
{
intn;
n=x*y;
result=sprintf_s(answer,"%d",n);
}
else
if(Operator[op]==Operator[3])
{
element=x;
denominator=y;
maxNum=cla::maxNumber(element,denominator);
element=element/maxNum;
denominator=denominator/maxNum;
if(denominator!=1)
{
result=sprintf_s(answer,"%d/%d",element,denominator);
}
else
{
result=sprintf_s(answer,"%d",element);
}
}
else
if(Operator[op]!=Operator[0]&&Operator[op]!=Operator[1]&&Operator[op]!=Operator[2]&&Operator[op]!=Operator[3])
{
result="error";
}
returnresult;
}
分数:
stringfraction(intop,inta,intb,intc,intd)
{
charOperator[]={'+','-','*','/'};
stringresult;
intelement,denominator;//定义答案分子、分母
intmaxNum;//定义公约数
charanswer[10];//答案
if(Operator[op]==Operator[0])
{
element=(b*c)+(a*d);
denominator=a*c;
maxNum=cla::maxNumber(element,denominator);
element=element/maxNum;
denominator=denominator/maxNum;
if(denominator!=1)
{
result=sprintf_s(answer,"%d/%d",element,denominator);
}
else
{
result=sprintf_s(answer,"%d",element);
}
}
else
if(Operator[op]==Operator[1])
{
element=(b*c)-(a*d);
denominator=a*c;
maxNum=cla::maxNumber(element,denominator);
element=element/maxNum;
denominator=denominator/maxNum;
if(denominator!=1)
{
result=sprintf_s(answer,"%d/%d",element,denominator);
}
else
{
result=sprintf_s(answer,"%d",element);
}
}
else
if(Operator[op]==Operator[2])
{
element=b*d;
denominator=a*c;
maxNum=cla::maxNumber(element,denominator);
element=element/maxNum;
denominator=denominator/maxNum;
if(denominator!=1)
{
result=sprintf_s(answer,"%d/%d",element,denominator);
}
else
{
result=sprintf_s(answer,"%d",element);
}
}
else
if(Operator[op]==Operator[3])
{
element=b*c;
denominator=a*d;
maxNum=cla::maxNumber(element,denominator);
element=element/maxNum;
denominator=denominator/maxNum;
if(denominator!=1)
{
result=sprintf_s(answer,"%d/%d",element,denominator);
}
else
{
result=sprintf_s(answer,"%d",element);
}
}
else
if(Operator[op]!=Operator[0]&&Operator[op]!=Operator[1]&&Operator[op]!=Operator[2]&&Operator[op]!=Operator[3])
{
result="error";
}
returnresult;
}
取最大公约数:
staticintmaxNumber(intk,intl)
{
while(k%l!=0)
{
intt=k%l;
k=l;
l=t;
}
returnl;
}
测试用例:
整数计算测试用例:
TEST_METHOD(integerTest)
{
//TrivialCalculatortest;
stringactual=test->integer(0,1,2);
stringexpected="3";
Assert::AreEqual(expected,actual);
actual=test->integer(0,2,1);
expected="2";
Assert::AreNotEqual(expected,actual);
actual=test->integer(1,1,2);
expected="-1";
Assert::AreEqual(expected,actual);
actual=test->integer(1,2,1);
expected="2";
Assert::AreNotEqual(expected,actual);
actual=test->integer(2,1,2);
expected="2";
Assert::AreEqual(expected,actual);
actual=test->integer(2,2,1);
expected="1";
Assert::AreNotEqual(expected,actual);
actual=test->integer(3,1,2);
expected="1/2";
Assert::AreEqual(expected,actual);
actual=test->integer(3,2,1);
expected="2";
Assert::AreNotEqual(expected,actual);
}
分数计算测试用例:
TEST_METHOD(fractionTest)
{
stringactual=test->fraction(0,1,2,1,2);
stringexpected="1";
Assert::AreEqual(expected,actual);
actual=test->fraction(0,1,2,1,2);
expected="2";
Assert::AreNotEqual(expected,actual);
actual=test->fraction(1,1,2,1,2);
expected="0";
Assert::AreEqual(expected,actual);
actual=test->fraction(1,1,2,1,2);
expected="2";
Assert::AreNotEqual(expected,actual);
actual=test->fraction(2,1,2,1,2);
expected="1/4";
Assert::AreEqual(expected,actual);
actual=test->fraction(2,1,2,1,2);
expected="1";
Assert::AreNotEqual(expected,actual);
actual=test->fraction(3,1,2,1,2);
expected="1";
Assert::AreEqual(expected,actual);
actual=test->fraction(3,1,2,1,2);
expected="2";
Assert::AreNotEqual(expected,actual);
}
最大公约数测试用例:
TEST_METHOD(maxNumberTest)
{
intactual=test->maxNumber(6,3);
intexpected=3;
Assert::AreEqual(expected,actual);
actual=test->maxNumber(4,2);
expected=3;
Assert::AreNotEqual(expected,actual);
}
结果:
我们试了很多次,也问过同学,查了百度,以为是插件问题,也在vs2010、vs2012、vs2013、vs2015都试过,上最终还是没能成功测试
小结与感受:
自学能力真的太重要了,而我明显这方面还很弱,c++的测试以前老师没讲,我们需要自己查资料自己学习,看着很多同学慢慢的都掌握了,测试也在有条不紊的进行,而我们还不知所措,无奈只能向同学求助,按照同学给的教程链接http://www.cnblogs.com/xiehongfeng100/p/4438076.html一步步进行操作,一开始没有注意到要下载UnitTestGenerator工具,一直没办法测试成功,耗了很长时间,后来想起来取下载时,出现了这种情况:
那就先去下载.NETFramework吧,却又出现了这种情况:
。。。
自己下的软件不行,那就用一下同学的软件吧,按照同学耐心指导的步骤做下来,在测试的时候,还是出现了:
这样几个错误,找了好久一直不知道该如何修改。。。
单元测试就这么失败了,经过这次作业,我更加深刻的体会到自己自主解决问题的能力还是非常差的,急需提高啊
结对照片:
PSP:
相关文章推荐