软件工程第二次作业

一 、开发工具的选择

   由于之前学习的需要,已经在电脑中安装了Visual Studio 2010,因此决定之后的软件工程作业的开发都用VS2010。软件截图如下:

二、练习自动单元测试技术

1、编写一个被测试的源代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClassLibrary1
{
    public class mathmatics1
    {

        public int add(int a, int b)
        {
            return a + b;
        }
        public int subtract(int a, int b)
        {
            return a - b;
        }
        public int multiply(int a, int b)
        {
            return a * b;
        }
        public int divide(int a, int b)
        {
            return a / b;
        }
    }
}

2、创建并编写测试单元

(1)创建单元测试:右键代码-->选择创建单元测试-->确定。截图如下:

(2)编写单元测试代码:

        /// <summary>
        ///add 的测试
        ///</summary>
        [TestMethod()]
        public void addTest()
        {
            mathmatics1 target = new mathmatics1(); // TODO: 初始化为适当的值
            int a = 8; // TODO: 初始化为适当的值
            int b = 2; // TODO: 初始化为适当的值
            int expected = 10; // TODO: 初始化为适当的值
            int actual;
            actual = target.add(a, b);
            Assert.AreEqual(expected, actual);
        }

        /// <summary>
        ///divide 的测试
        ///</summary>
        [TestMethod()]
        public void divideTest()
        {
            mathmatics1 target = new mathmatics1(); // TODO: 初始化为适当的值
            int a = 8; // TODO: 初始化为适当的值
            int b = 2; // TODO: 初始化为适当的值
            int expected = 4; // TODO: 初始化为适当的值
            int actual;
            actual = target.divide(a, b);
            Assert.AreEqual(expected, actual);
        }

        /// <summary>
        ///multiply 的测试
        ///</summary>
        [TestMethod()]
        public void multiplyTest()
        {
            mathmatics1 target = new mathmatics1(); // TODO: 初始化为适当的值
            int a = 8; // TODO: 初始化为适当的值
            int b = 2; // TODO: 初始化为适当的值
            int expected = 16; // TODO: 初始化为适当的值
            int actual;
            actual = target.multiply(a, b);
            Assert.AreEqual(expected, actual);
        }

        /// <summary>
        ///subtract 的测试
        ///</summary>
        [TestMethod()]
        public void subtractTest()
        {
            mathmatics1 target = new mathmatics1(); // TODO: 初始化为适当的值
            int a = 8; // TODO: 初始化为适当的值
            int b = 2; // TODO: 初始化为适当的值
            int expected = 6; // TODO: 初始化为适当的值
            int actual;
            actual = target.subtract(a, b);
            Assert.AreEqual(expected, actual);
        }

单元测试代码说明:可能会出现疑问的是除法测试,因为没有考虑分母不为0的情况。由于是第一次做单元测试练习,这里暂时假设不会出现分母为0情况。

3、测试结果

(1)点击菜单栏中的“运行解决方案中的所有测试”按钮

(2)测试结果


测试结果显示有四个通过测试,一个未通过测试。现在查看测试的详细结果:

通过查看详细测试结果,我们可以获得的信息是:测试add()函数时,期望值是:18,实际输出值是:10。在编写单元测试代码时,由于我的不仔细,把期望值"10"误写为了"18"。现在修改单元测试代码,重新运行测试,得到正确的测试结果:

总结

   这是第一次在VS2010上实现代码的单元测试,之前听说过单元测试,但是并没有真正动手实践。单元测试在软件开发过程中是一个非常重要的环节,他是解决软件开发过程中各个模块功能定义尽量明确的有效方案。在今后的结对项目和团队项目开发工程中,我会继续去实践单元测试以达到熟练掌握。

参考链接:

  现代软件工程讲义 2 开发技术 - 单元测试 & 回归测试
  使用VisualStudio进行单元测试之一

posted on 2019-04-12 22:17  静水流深i  阅读(168)  评论(0)    收藏  举报