要求1 对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。
要求2 在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码。(40分)
要求3 做好准备,在接下的一周你可能无法通过别人的测试用例。 (0分)
要求4 使用coding.net做版本控制。checkin 前要求清理 临时文件、可执行程序,通常执行 build-clean可以达到效果。(5分)
由于用堆栈进行后缀表达式的处理构造了很多函数,在这个单元测试过程中选取了主要的几个函数进行测试。
测试代码:
#include "stdafx.h" using namespace System; using namespace System::Text; using namespace System::Collections::Generic; using namespace Microsoft::VisualStudio::TestTools::UnitTesting; namespace TestProject1 { [TestClass] public ref class UnitTest1 { private: TestContext ^ testContextInstance; public: property Microsoft::VisualStudio::TestTools::UnitTesting::TestContext ^ TestContext { Microsoft::VisualStudio::TestTools::UnitTesting::TestContext ^ get() { return(testContextInstance); } System::Void set( Microsoft::VisualStudio::TestTools::UnitTesting::TestContext ^ value ) { testContextInstance = value; } }; [TestMethod] double Operate( double a, unsigned char theta, double b ) { switch ( theta ) { case '+': return(a + b); case '-': return(a - b); case '*': return(a * b); case '/': return(a / b); default: return(0); } } [TestMethod] double GetAns( string str ) { int len; double ans; len = str.length(); char *num = new char[len]; for ( int j = 0; j < len; j++ ) { num[j] = str[j]; } ans = EvaluateExpression( num ); return(ans); } [TestMethod] double EvaluateExpression( char* MyExpression ) { SC*OPTR = NULL; SF*OPND = NULL; char TempData[20]; double Data, a, b; char theta, *c, Dr[] = { '#', '