发布网友 发布时间:2024-10-24 00:28
共1个回答
热心网友 时间:2024-11-02 06:28
既然是从零开始 就先介绍一下NUnit () 一个 NET 框架下的单元测试框架 提供了类似于 JUnit的功能 也是 NET 框架下开发者应用最广泛的单元测试框架之一(其他的还包括 CSUnit 等等)
它的基本原理是通过 NET 的反射机制 利用代码中的元数据(Attribute)来辨识到底有哪些单元测试 单元测试(Unit Test)是测试驱动开发(Test Driven Development TDD)很重要的一环 而TDD又是敏捷开发方法(比如极限编程 eXtreme Programming)的重要组成部分…… 总之 单元测试很重要就对了 ^_^ (有关TDD XP的详细介绍在博客园的很多blog上就有 当然 google 上就更多了)
例子开始
下载 安装 NUnit(最新版可能是 )
很重要的步骤 测试一下 NUnit 是否安装成功
方法 打开 NUnit File Open 选 NUnit 安装目录下的bin目录中的 nunit tests dll 这时NUnit 主窗口左部的树型列表中会出现很多个测试的名字 然后点 Run 按钮 接着测试就开始运行了 直到 NUnit 主窗口左部的树型列表中所有的测试前面都变成绿色 那就是成功了 (失败的测试会有红色的提示 没有运行的测试会有*的提示 在这一步中 有可能 Console Runner 那个测试集合会出现问题 万一出现问题 重启一下 NUnit 再 Run 一般都是没问题的)
怎么在开发中使用 NUnit 框架? )打开VS NET 新建一个 C# 的 Console 项目 在项目的 References 添加 nunit framework(References 在 Solution Explorer 窗口中 右键 Add Reference )
)随便写一个类
public class Account // 银行帐户类 {private float balance; // 账户的余额
public void Deposit(float amount) // 存钱 {balance+=amount;}
public void Withdraw(float amount) //取钱 {balance =amount;}
public void TransferFunds(Account destination float amount) // 转账 {destination Deposit(amount);Withdraw(amount);}
public float Balance{get{ return balance; }}public static void Main(string[] args){Account source = new Account(); // 新建个账户 source Deposit( F); // 存 Account destination = new Account(); // 又建了一个 destination Deposit( F); // 存 source TransferFunds(destination F); // 第一个账户转给第二个 }}
这个类很简单 编译通过 运行 一切ok
)在同一个项目中 增加一个用来测试 Account 类中的方法的测试类(里面的几个Attribute是最关键的)
using NUnit Framework; // 千万别忘了这一行
[TestFixture] // 这个Attribute说明 AccountTest 类中包含有测试 public class AccountTest{[Test] // 这个Attribute说明了 TestTransferFunds() 方法就是用来做测试的 // 一般测试方法的名字就是在被测试方法名前加上Test public void TestTransferFunds(){// 准备工作 Account source = new Account();source Deposit( F);Account destination = new Account();destination Deposit( F);
source TransferFunds(destination F); // 转账
// 利用 Nunit Framework 中的 Assert 类看看转账以后两个账户的余额是否正确 Assert AreEqual( F destination Balance);Assert AreEqual( F source Balance);}}
然后编译一下 生成一个 exe 文件(如果要生成 DLL 的话 更改一下这个这个项目的 Output Type属性 改成 Class Library就可以了 这个改动还是在Solution Explorer 窗口中 项目名上 右键 属性 对于这个例子 生成DLL的话就不需要 Main() 方法了)
)打开NUnit File Open 找到刚才编译生成的 exe 然后 Run 满眼可爱的绿色
就说明测试都成功了^_^
如果想看看测试失败的样子 可以把 Assert AreEqual() 里面的值改一下……
例子中只用到了 Test Fixture 和 Test 这两个Attribute 其他更多的用法在 NUnit 文档中写得十分清楚 文档中也有些更好的例子……
自动化的单元测试有什么用? 答 省时省力 当一个系统需要测试的类/方法 成千上万时 手工的测试方法(用控制台打印出信息等等)的效率会比较低
lishixin/Article/program/net/201311/12066