结对编程2——单元测试
碼市地址:https://git.coding.net/cjz113/jiedui2.git
結對成員:201421123111 201421123113
題目描述:
上一周大家為四則運算程序設計了2-3個新功能,本次在隔了一周之后,我們循序漸進地進階。本次目標:
題目要求:
提取計算類:
類定義:
class cla { public:string integer(int op,int x,int y);string fraction(int op,int a,int b,int c,int d);static int maxNumber(int k, int l); };整數:
string integer(int op, int x, int y) {char Operator[] = { '+', '-', '*', '/' };string result;int element, denominator; //定義答案分子、分母int maxNum; //定義公約數char answer[10]; //答案if (Operator[op] == Operator[0]){int n;n = x + y;result = sprintf_s(answer, "%d", n);}elseif (Operator[op] == Operator[1]){int n;n = x - y;result = sprintf_s(answer, "%d", n);}elseif (Operator[op] == Operator[2]){int n;n = x*y;result = sprintf_s(answer, "%d", n);}elseif (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);}}elseif (Operator[op] != Operator[0] && Operator[op] != Operator[1] && Operator[op] != Operator[2] && Operator[op] != Operator[3]){result = "error";}return result; }分數:
string fraction(int op, int a, int b, int c, int d) {char Operator[] = { '+', '-', '*', '/' };string result;int element, denominator; //定義答案分子、分母int maxNum; //定義公約數char answer[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);}}elseif (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);}}elseif (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);}}elseif (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);}}elseif (Operator[op] != Operator[0] && Operator[op] != Operator[1] && Operator[op] != Operator[2] && Operator[op] != Operator[3]){result = "error";}return result; }取最大公約數:
static int maxNumber(int k, int l) {while (k%l != 0){int t = k%l;k = l;l = t;}return l; }測試用例:
整數計算測試用例:
TEST_METHOD(integerTest){//TrivialCalculator test;string actual = test->integer(0, 1, 2);string expected = "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){string actual = test->fraction(0, 1, 2, 1, 2);string expected = "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){int actual = test->maxNumber(6, 3);int expected = 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一步步進行操作,一開始沒有注意到要下載Unit Test Generator工具,一直沒辦法測試成功,耗了很長時間,后來想起來取下載時,出現了這種情況:
那就先去下載.NET Framework吧,卻又出現了這種情況:
。。。
自己下的軟件不行,那就用一下同學的軟件吧,按照同學耐心指導的步驟做下來,在測試的時候,還是出現了:
這樣幾個錯誤,找了好久一直不知道該如何修改。。。
單元測試就這么失敗了,經過這次作業,我更加深刻的體會到自己自主解決問題的能力還是非常差的,急需提高啊
結對照片:
PSP:
?
轉載于:https://www.cnblogs.com/cxx111/p/6639268.html
總結
以上是生活随笔為你收集整理的结对编程2——单元测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ***组网不用愁之1-中小企业***网络
- 下一篇: 详解在 Linux 启动时,如何自动执行