软件工程第二次作业

一、选择开发工具

运用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

四、总结

  本次作业中,刚开始不知道从哪下手,反复多次阅读老师提供的两篇博客后,才开始进行操作。其过程中遇到问题,多次在网上查询解决方法及寻求同学的帮助,最终得以将任务完成。单元测试在项目中是必不可少的,这次作业不仅让我了解了单元测试的方法,在之后更大的项目中可以灵活运用,增强了我动手实践的能力,同时也让我明白了我还有很多东西需要不断学习不断探索,在失败中找到解决的方法。

posted @ 2019-04-13 12:33  喵啊咪  阅读(158)  评论(0编辑  收藏  举报