VS2005 是如何做 單元測試 的(此處的單元測試目的是為了發現程序邏輯上的錯誤,測試的最小單元是: XX 方法)。 1 、編寫一個加法程序,其中編寫一個加法方法,然后調用該方法。 程序代碼如下: using" name="description" />
下面通過一個簡單的例子來講解MILY: 'Courier New'">VS2005是如何做單元測試的(此處的單元測試目的是為了發現程序邏輯上的錯誤,測試的最小單元是:XX方法)。
1、編寫一個加法程序,其中編寫一個加法方法,然后調用該方法。
程序代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int Add(int a,int b) //構建ADD方法
{
return a +b ;
}
private void button1_Click(object sender, EventArgs e)
{
int temp = 0;
temp=Add(Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));//調用ADD方法
textBox3.Text = temp.ToString();
}
private void label2_Click(object sender, EventArgs e)
{
}
private void label3_Click(object sender, EventArgs e)
{
}
}
}程序運行截圖如下:
2、測試ADD方法。
在VS2005,將光標移動到ADD方法處,單擊鼠標右鍵并點擊“創建單元測試“,如下圖(在此界面中可以選擇單元測試的代碼為哪種語言:C#,VB,C++)
創建完單元測試代碼后,可以看到此時VS2005自動為ADD方法創建的單元測試代碼原碼如下
///<summary>
///Add (int, int) 的測試
///</summary>
[TestMethod()]
public void AddTest()
{
Form1 target = new Form1();
int a = 0; // TODO: 初始化為適當的值
int b = 0; // TODO: 初始化為適當的值
int expected = 0;
int actual;
actual = target.Add(a, b);
Assert.AreEqual(expected, actual, "WindowsApplication1.Form1.Add 未返回所需的值。");
Assert.Inconclusive("驗證此測試方法的正確性。");
}
}
在上面的代碼中,根據系統提示,應對參數a,b進行初始化,假設a=30,b=15;將原始代碼稍做修改為下:
///<summary>
///Add (int, int) 的測試
///</summary>
[TestMethod()]
public void AddTest()
{
Form1 target = new Form1();
int a = 30; // TODO: 初始化為適當的值
int b = 15; // TODO: 初始化為適當的值
int expected = 45; //預期結果應該為:30+15=45
int actual;
actual = target.Add(a, b);
Assert.AreEqual(expected, actual);//預期結果與真實結果進行對比,如果相同則測試通過,否則失敗
// Assert.Inconclusive("驗證此測試方法的正確性。");注釋該行
}
}
此時運行該測試代碼。(可以分別從測試管理器,和工具條上運行)
通過運行該段代碼可以看到運行結果為:通過。
此時如果將ADD方法中的a+b改為a-b;然后重新運行一遍更改后的代碼和該段測試代碼,此時的測試結果為:失?。ú榭村e誤信息可以看到預期為45,而實際為15)。
如果想要查看詳細信息,雙擊測試結果,將會得到詳細信息
結論:
通過VS2005的單元測試,程序員只需要在單元測試代碼中將參數和預期結果實例化,然后運行就可以看到自己編寫的代碼在邏輯上有沒有問題!同樣,如果想讓單元測試發現更多的問題,則必須對測試用例進行詳細的設計,比如設計一個如下簡單的測試用例:
測試參數a |
測試參數b |
預期結果 |
實際結果 |
-10 |
11 |
1 |
|
-32768 |
32767 |
-1 |
|
32767 |
1 |
32768 |
|
-32769 |
2 |
32767 |
|
…. |
通過以上用例可以發現當:
1、 輸入的參數本身超出范圍時,系統出錯。
2、 輸入的參數在范圍內,但通過加法運算后,輸出結果的參數不在范圍內,系統出錯。
3、 輸入的參數在范圍內,由于邏輯運算錯誤,輸出的結果不是預期值,系統出錯。
…..
原文轉自:http://www.anti-gravitydesign.com