软件工程第二次作业
一、选择开发工具
运用C++语言,选择Visual Studio 2017开发工具。由于之前已经安装了VS2017,所以在这里只展示出运行后的截图。
二、练习自动单元测试技术
1.编写需要被测试的代码
创建.cpp文件编写了一个四则运算代码,具体代码如下:
#include<iostream>
#include"p1.h"
using namespace std;
int calculate::add(int x, int y)//加法
{
return x + y;
}
int calculate::sub(int x, int y)//减法
{
return x - y;
}
int calculate::mul(int x, int y)//乘法
{
return x * y;
}
int calculate::div(int x, int y)//除法
{
return x / y;
}
int main()
{
return 0;
}
创建头文件p1.h
#pragma once
class calculate
{
public:
int add(int x, int y);
int sub(int x, int y);
int mul(int x, int y);
int div(int x, int y);
};
2.创建新的测试单元
(1)成功生成解决方案后,解决方案-->右键-->添加-->新建项目,创建本机单元测试项目。
(2)创建成功后,UnitTest1-->右键-->引用-->添加引用,之后选择测试项目。
3.编写测试程序
为测试全面,编写了八组测试用例
#include "stdafx.h"
#include "CppUnitTest.h"
#include "../Project1/p1.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
// TODO: 加法测试代码1
calculate m;
Assert::AreEqual(23, m.add(18, 5));
}
TEST_METHOD(TestMethod2)
{
// TODO: 减法测试代码1
calculate m;
Assert::AreEqual(40, m.sub(77, 37));
}
TEST_METHOD(TestMethod3)
{
// TODO: 乘法测试代码1
calculate m;
Assert::AreEqual(0, m.mul(40, 0));
}
TEST_METHOD(TestMethod4)
{
// TODO: 除法测试代码1
calculate m;
Assert::AreEqual(1, m.div(6, 6));
}
TEST_METHOD(TestMethod5)
{
// TODO: 加法测试代码2
calculate m;
Assert::AreEqual(123, m.add(18, 105));
}
TEST_METHOD(TestMethod6)
{
// TODO: 减法测试代码2
calculate m;
Assert::AreEqual(-4, m.sub(7, 11));
}
TEST_METHOD(TestMethod7)
{
// TODO: 乘法测试代码2
calculate m;
Assert::AreEqual(22, m.mul(1, 22));
}
TEST_METHOD(TestMethod8)
{
// TODO: 除法测试代码2
calculate m;
Assert::AreEqual(0, m.div(0, 6));
}
};
}
ps: Assert.AreEqual() 测试指定的值是否相等,如果相等,则测试通过;
4.进行单元测试
选择运行全部测试,结果如下。
由此可见,以上八个测试用例通过测试,而没有通过测试是什么样的呢?由此,做了一定修改,了解未通过测试情况。
结果如上图所示,若测试不通过则会出现提示,由错误提示则可以找到出错用例,从而对代码进行快速修改。
三、遇到问题及解决方法
1.在编写完测试代码后,运行失败。在网上查询和同学帮助下,了解问题原因:没有附加依赖项。经过相应修改后,能够成功生成。即UnitTest1-->输入-->选择依赖项,填写文件路径:..\Project1\Debug*.obj
2.在编写测试代码时,将多个用例写在一组当中,但测试出现错误时,却不能发现错误出现在哪个用例上,导致查错麻烦。后来将一个用例写在一组测试中,这样就可以明了的看出存在的问题。
参考来源:https://blog.csdn.net/u014294166/article/details/52454392
https://www.cnblogs.com/puddingcat/p/8620310.html
四、总结
本次作业中,刚开始不知道从哪下手,反复多次阅读老师提供的两篇博客后,才开始进行操作。其过程中遇到问题,多次在网上查询解决方法及寻求同学的帮助,最终得以将任务完成。单元测试在项目中是必不可少的,这次作业不仅让我了解了单元测试的方法,在之后更大的项目中可以灵活运用,增强了我动手实践的能力,同时也让我明白了我还有很多东西需要不断学习不断探索,在失败中找到解决的方法。