项目成员:栗海辉201421123121 黄良静201421123103
项目地址:https://coding.net/u/lenmo/p/text/git
遇到的问题:当再一次查看以前的代码的时候由于没有很好的备注和没有用英语创建未知变量导致很多代码忘记了原来的用途。有时候会出现一些bug,通过测试修改了一部分代码。

a、需求分析:

在编写程序的过程中,我们经常会遇到这样的困惑,程序写着写着,就奇长无比,回头看,已经不知道这段代码为何物,百般思索过后终于想起来,但又忘记了当前代码写到了哪里。对于一个程序来说不仅要可用,还应该追求稳定,所以应该对程序的各部分功能进行测试,尽量修复bug。利用单元测试能够让我们写的代码更加健全,能够让程序能够不用牵一发而动全身,大大的改善后期维护花费的工作量。针对提取出来的计算类的接口函数做单元测试。
本次目标:

a.通过单元测试代码,测试加法是否能正确工作;
b.通过单元测试代码,测试加减乘除功能。
c.通过单元测试代码,测试真分数的加减乘除能否正常工作。

1、通过测试代码,检测最大公约数


#include "stdafx.h"
#include "CppUnitTest.h"
#include"D:\projects\api\lhhhh\lhhhh\121.cpp"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			
			Assert::AreEqual(maxNum(6, 3), 3);
			// TODO: 在此输入测试代码
		}

	};
}

2、通过测试代码,检测加法是否正确


using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			//0代表加法
			
			Assert::AreEqual(add(4,2,0),6);
			Assert::AreEqual(add(3,1,0),4);
	Assert::AreEqual(lhh(4,2,3,8,3), c);
			// TODO: 在此输入测试代码
		}

	};
}

3、通过测试代码,检测减法法是否正确


#include "stdafx.h"
#include "CppUnitTest.h"
#include"D:\projects\api\lhhhh\lhhhh\121.cpp"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			//1代表减法
			Assert::AreEqual(add(6, 3, 1), 3);
			Assert::AreEqual(add(4, 2, 1), 2);
			// TODO: 在此输入测试代码
		}

	};
}

4、通过测试代码,检测乘除是否正确


#include "stdafx.h"
#include "CppUnitTest.h"
#include"D:\projects\api\lhhhh\lhhhh\121.cpp"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			//2,3代表乘除
			
			Assert::AreEqual(add(4, 2, 2), 8);
			Assert::AreEqual(add(4, 2, 3), 2);
			// TODO: 在此输入测试代码
		}

	};
}

5、通过测试代码,检测真分数的加减乘除是否正确


using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			//0,1,2,3代表加减乘除
			string s = "19/8";
			string a = "13/8";
			string b = "3/4";
			string c = "16/3";
			Assert::AreEqual(lhh(4,2,3,8,0),s );
			Assert::AreEqual(lhh(4,2,3,8,1),a);
			Assert::AreEqual(lhh(4,2,3,8,2),b);
			Assert::AreEqual(lhh(4,2,3,8,3), c);
			// TODO: 在此输入测试代码
		}

	};
}

测试代码截图:

代码覆盖率:出现了一些问题不知道为什么代码覆盖率始终为0

小结:绝对编程的心得刚看到题目的时候认为单元测试是一个很简单的事情,但是当开始测试的时候出现了许许多多的问题,例如测试类代码的编写,经历了查阅资料才解决。在此次测试也统一了命名规则,因为是第二次一起合作默契也提高了不少,在编写的过程中也有许许多多的不规范的地方通过队友的提示也有所改善,也懂得了却长补短的益处自己也学到了知识。
对伙伴的评价:在我有一些不正确的或者不规范的时候回及时的提醒并修改我的错误,是以为很好的良师益友。虽然每个人有不同的编码规范但是经历过两次的合作也能看懂得了彼此得编码习惯,
本人的编写代码的能力不是很好,队友也会主动教我一些编码的小技巧,也会很有耐心的帮我解决问题。