李志强 201421123028 连永刚 201421123014 林方言 201421123023

coding 地址:https://git.coding.net/lizhiqiang0x01/sizeyunsuan-TestExample.git

一、题目要求


1、通过单元测试代码,测试加法是否能正确工作;

2、通过单元测试代码,测试加减乘除功能。

3、通过单元测试代码,测试计算类对于各种参数的支持:

     a. 输入是有错误的,例如 “1 ++ 2”,

     b. 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,

     c. 或者是 “ 248 / 0” 怎么办?

     d. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?

     e. 那么如果真的计算结果是 “-1” 又怎么处理呢?

4、通过增量修改的方式,改进程序, 完成对各种错误情况的处理。


 二、实验步骤


   a、需求分析

    通过单元测试代码,测试程序加减乘除功能是否正确工作,对于格式错误、数值溢出、除零异常是否能检测的到。

  b、设计测试框架,模拟测试数据

  • 测试加减乘除功能
        TEST_METHOD(TestAdd)    //测试加法
        {
            Test.CheckInput("1/2+4");
            Assert::AreEqual(test11,Test.add());
        }
        TEST_METHOD(TestAdd1)
        {
            Test.CheckInput("3+1/3");
            Assert::AreEqual(test12, Test.add());
        }
        TEST_METHOD(TestAdd2)
        {
            Test.CheckInput("2+4");
            Assert::AreEqual(test13, Test.add());
        }
        TEST_METHOD(TestAdd3)
        {
            Test.CheckInput("1/2+1/4");
            Assert::AreEqual(test14, Test.add());
        }

        TEST_METHOD(TestSub)           //测试减法
        {
            Test.CheckInput("1/2-1/3");
            Assert::AreEqual(test21, Test.sub());
        }

        TEST_METHOD(TestSub1)
        {
            Test.CheckInput("1/3-2");
            Assert::AreEqual(test22, Test.sub());
        }
        TEST_METHOD(TestSub2)
        {
            Test.CheckInput("2-1/3");
            Assert::AreEqual(test23, Test.sub());
        }
        TEST_METHOD(TestSub3)
        {
            Test.CheckInput("5-3");
            Assert::AreEqual(test24, Test.sub());
        }

        TEST_METHOD(TestMul)       //测试乘法
        {
            Test.CheckInput("1×2");        
            Assert::AreEqual(test31, Test.mul());
        }
        TEST_METHOD(TestMul1)
        {
            Test.CheckInput("1/2×2");
            Assert::AreEqual(test32, Test.mul());
        }
        TEST_METHOD(TestMul2)
        {
            Test.CheckInput("2×1/3");
            Assert::AreEqual(test33, Test.mul());
        }
        TEST_METHOD(TestMul3)
        {
            Test.CheckInput("1/3×1/2");
            Assert::AreEqual(test34, Test.mul());
        }
        TEST_METHOD(TestDiv)       //测试除法
        {
            Test.CheckInput("1/2÷2");
            Assert::AreEqual(test41, Test.div());
        }
        TEST_METHOD(TestDiv1)
        {
            Test.CheckInput("4÷1/2");
            Assert::AreEqual(test42, Test.div());
        }
        TEST_METHOD(TestDiv2)
        {
            Test.CheckInput("1/2÷2/3");
            Assert::AreEqual(test43, Test.div());
        }
        TEST_METHOD(TestDiv3)
        {
            Test.CheckInput("1÷2");
            Assert::AreEqual(test44, Test.div());
        }
    
  • 测试格式错误、数值溢出、除零异常功能
        TEST_METHOD(TestCheckFormat1)     //测试格式错误
        {
            Test.CheckInput("2--2");
            Assert::AreEqual(test5, Test.g_szErrIn);
        }
        TEST_METHOD(TestCheckFormat2)
        {
            Test.CheckInput("2+÷2");
            Assert::AreEqual(test5, Test.g_szErrIn);
        }
        TEST_METHOD(TestCheckFormat3)
        {
            Test.CheckInput("2+×2");
            Assert::AreEqual(test5, Test.g_szErrIn);
        }
        TEST_METHOD(TestCheckFormat4)
        {
            Test.CheckInput("2+×");
            Assert::AreEqual(test5, Test.g_szErrIn);
        }
        TEST_METHOD(TestCheckFormat5)
        {
            Test.CheckInput("2+/2");
            Assert::AreEqual(test5, Test.g_szErrIn);
        }
        TEST_METHOD(TestCheckNum61)     //测试非法数值
        {
            Test.CheckInput("1÷0");
            Test.div();
            Assert::AreEqual(test6, Test.g_szErrNum);
        }
        TEST_METHOD(TestCheckNum62)
        {
            Test.CheckInput("1/0");
            Test.div();
            Assert::AreEqual(test6, Test.g_szErrNum);
        }
        TEST_METHOD(TestCheckNum63)
        {
            Test.CheckInput("1/2+2/0");
            Test.add();
            Assert::AreEqual(test6, Test.g_szErrNum);
        }
        TEST_METHOD(TestCheckBey71)      //测试时数值溢出
        {
            Test.CheckInput("-2000+2");
            Test.add();
            Assert::AreEqual(test7, Test.g_szErrBey);
        }
        TEST_METHOD(TestCheckBey72)
        {
            Test.CheckInput("-2000");
            Test.add();
            Assert::AreEqual(test7, Test.g_szErrBey);
        }
        TEST_METHOD(TestCheckBey73)
        {
            Test.CheckInput("-200+2/3000");
            Test.add();
            Assert::AreEqual(test7, Test.g_szErrBey);
        }
View Code

相关文章: