码迷,mamicode.com
首页 > 其他好文 > 详细

作业要求20170928-2 单元测试结对

时间:2017-10-10 20:27:14      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:color   求值   span   功能需求   c++   天才   init   case   使用   

要求1 

对每个功能,先给出测试用例,然后在编码功能。请注意把测试用例视为功能需求完成的检验指标。

1 首先添加c++测试工具

技术分享

2 添加c++测试

  技术分享

3 在TestMethod1()函数里面添加要测试功能 ,我添加的是求值功能。

 技术分享

 4 测试结果通过

技术分享

 

5 测试代码如下 

技术分享
  1 #include "stdafx.h"
  2 #include<stdio.h>
  3 #include<stack>
  4 #include<stdlib.h>
  5 #include<string>
  6 #include<math.h>
  7 #include<time.h>
  8 using namespace std;
  9 using namespace System;
 10 using namespace System::Text;
 11 using namespace System::Collections::Generic;
 12 using namespace Microsoft::VisualStudio::TestTools::UnitTesting;
 13 
 14 void weishu(char str[10], int i, int n);
 15 struct Number
 16 {
 17     double a;
 18     bool b;
 19 };
 20 stack<Number>s3;
 21 void houzhuiming(char str[10])
 22 {
 23     stack<char>s1;
 24     stack<Number>s2;
 25     int i = 0, j = 0;
 26     for (i = 0; str[i] != \0; i++)
 27     {
 28         if (str[i] >= 0&&str[i] <= 9)
 29         {
 30             Number num;
 31             num.a = 0;
 32             num.b = 0;
 33             while (str[i] <= 9&&str[i] >= 0)
 34                 num.a = (str[i++] - 0) + num.a * 10;
 35             s2.push(num);
 36             i--;
 37         }
 38         else
 39         {
 40             if (str[i] == ))
 41             {
 42                 while (s1.top() != ()
 43                 {
 44                     Number num;
 45                     num.b = 1;
 46                     num.a = s1.top();
 47                     s2.push(num);
 48                     s1.pop();
 49                 }
 50                 s1.pop();
 51             }
 52             else if (s1.empty() || s1.top() == ( || str[i] == ()
 53             {
 54                 s1.push(str[i]);
 55             }
 56             else
 57             {
 58                 if ((str[i] == * || str[i] == /) && (s1.top() == + || s1.top() == -))
 59                     s1.push(str[i]);
 60                 else
 61                 {
 62                     Number num;
 63                     num.b = 1;
 64                     num.a = s1.top();
 65                     s2.push(num);
 66                     s1.pop();
 67                     i--;
 68                 }
 69             }
 70         }
 71     }
 72     while (!s1.empty())
 73     {
 74         Number num;
 75         num.b = 1;
 76         num.a = s1.top();
 77         s2.push(num);
 78         s1.pop();
 79     }
 80     while (!s2.empty())
 81     {
 82         s3.push(s2.top());
 83         s2.pop();
 84     }
 85 }
 86 void fuhao(char str[10], int i, int n)
 87 {
 88     //srand(time(0));
 89     int num = rand() % 4;
 90     srand(time(0));
 91     switch (num)
 92     {
 93     case 0:str[i] = +; break;
 94     case 1:str[i] = -; break;
 95     case 2:str[i] = *; break;
 96     case 3:str[i] = /; break;
 97     }
 98     weishu(str, ++i, n);
 99 }
100 void weishu(char str[10], int i, int n)
101 {
102     //   srand(time(0));
103     int num = rand() % 10;
104     srand(time(0));
105     str[i] = 0 + num;
106     n++;
107     if (n == 4)
108     {
109         str[++i] = \0;
110         return;
111     }
112     i++;
113     fuhao(str, i, n);
114 }
115 
116 namespace TestProject1
117 {
118     [TestClass]
119     public ref class UnitTest
120     {
121     private:
122         TestContext^ testContextInstance;
123 
124     public: 
125         /// <summary>
126         ///获取或设置测试上下文,该上下文提供
127         ///有关当前测试运行及其功能的信息。
128         ///</summary>
129         property Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ TestContext
130         {
131             Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ get()
132             {
133                 return testContextInstance;
134             }
135             System::Void set(Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ value)
136             {
137                 testContextInstance = value;
138             }
139         };
140 
141         #pragma region Additional test attributes
142         //
143         // 编写测试时,可以使用以下附加特性: 
144         //
145         // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
146         //[ClassInitialize()]
147         //static void MyClassInitialize(TestContext^ testContext) {};
148         //
149         // 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
150         //[ClassCleanup()]
151         //static void MyClassCleanup() {};
152         //
153         //在运行每个测试之前,使用 TestInitialize 来运行代码
154         //[TestInitialize()]
155         //void MyTestInitialize() {};
156         //
157         //在每个测试运行完之后,使用 TestCleanup 来运行代码
158         //[TestCleanup()]
159         //void MyTestCleanup() {};
160         //
161         #pragma endregion 
162 
163         [TestMethod]
164         void TestMethod1()
165         {
166             //
167             // TODO:  在此处添加测试逻辑
168             //
169             stack<double>s4;
170             while (!s3.empty())
171             {
172                 Number c1 = s3.top();
173                 s3.pop();
174                 if (c1.b == 0)
175                     s4.push(c1.a);
176                 else
177                 {
178                     double c2 = s4.top();
179                     s4.pop();
180                     double c3 = s4.top();
181                     s4.pop();
182                     double c4;
183                     switch ((int)c1.a)
184                     {
185                     case +:c4 = c3 + c2; break;
186                     case -:c4 = c3 - c2; break;
187                     case *:c4 = c3*c2; break;
188                     case /:c4 = c3 / c2; break;
189                     }
190                     s4.push(c4);
191                 }
192             }
193             return s4.top();
194         };
195     };
196 }
197 int main()
198 {
199     char str[100];
200     int js = 0;
201     for (int i = 0; i < 20; i++)
202     {
203         int t = 0;
204         int n = 0;
205         weishu(str, t, n);
206         houzhuiming(str);
207         double ans = void TestMethod1();
208         for (int i = 0; str[i] != \0; i++)
209             printf("%c", str[i]);
210         printf("=\n?");
211         double s;
212         scanf("%lf", &s);
213             if (abs(s - ans)<0.01)
214             {
215                 js++;
216                 printf("答对了,你真是天才\n");
217             }
218             else
219                 printf("再想想吧,答案似乎是%.2lf喔!\n", ans);
220         }
221         printf("你一共答对%d道题,共20道题。\n", js);
222         return 0;
223     }
View Code

 

 

要求 2

在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码

                 测试以前没接触过,测试我主要是用单元测试,我先上网查了一下,网上说点击函数右键 如图

 技术分享

技术分享

 

结果出现这样的错误 我查了一下,结果并没有解决这样的错误,然后我有直接添加测试,但是看老师的要求,2人结对,使用TDD测试框架 (如NUnit, JUnit, cppUnit等)完成本周作业四则运算试题生成的单元测试。我试着查了一下百度,百度说Nunit主要是c#的测试,Junt主要是java代码的测试,cppUnit主要是c++测试的工具然而我查了一下cppunit在vs2010上过程如图

技术分享

 

技术分享

 

技术分享

什么都找不到,这就很尴尬了,所以我努力解决这个问题,结果没有成功,所以我又下载了个2015 ,在2015上找到了cppUnit

技术分享

这样找到了,c++的测试,测试代码

技术分享
 1 [TestMethod]
 2         void TestMethod1()
 3         {
 4             //
 5             // TODO:  在此处添加测试逻辑
 6             //
 7             stack<double>s4;
 8             while (!s3.empty())
 9             {
10                 Number c1 = s3.top();
11                 s3.pop();
12                 if (c1.b == 0)
13                     s4.push(c1.a);
14                 else
15                 {
16                     double c2 = s4.top();
17                     s4.pop();
18                     double c3 = s4.top();
19                     s4.pop();
20                     double c4;
21                     switch ((int)c1.a)
22                     {
23                     case +:c4 = c3 + c2; break;
24                     case -:c4 = c3 - c2; break;
25                     case *:c4 = c3*c2; break;
26                     case /:c4 = c3 / c2; break;
27                     }
28                     s4.push(c4);
29                 }
30             }
31             return s4.top();
32         };
33     };
34 }
View Code

 

作业要求20170928-2 单元测试结对

标签:color   求值   span   功能需求   c++   天才   init   case   使用   

原文地址:http://www.cnblogs.com/tianjiing/p/7645045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!