软件工程第二次作业
一 、开发工具的选择
由于之前学习的需要,已经在电脑中安装了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上实现代码的单元测试,之前听说过单元测试,但是并没有真正动手实践。单元测试在软件开发过程中是一个非常重要的环节,他是解决软件开发过程中各个模块功能定义尽量明确的有效方案。在今后的结对项目和团队项目开发工程中,我会继续去实践单元测试以达到熟练掌握。
浙公网安备 33010602011771号