.NET 程序集单元测试工具 SmokeTest 应用指南
Smoke Test(冒煙測試),也稱Regression Test(回歸測試),是對軟件的安裝和基本功能的測試。一般地我們使用腳本來實現(xiàn)Smoke Test的自動化,可借用虛擬機的snapshot機制來保證干凈的環(huán)境來進行Smoke Test,然后將測試好的程序集成到Continous build或daily build中。?
冒煙測試是指一種基本功能測試,是從硬件測試借鑒過來的。進行硬件測試時,首先需要給硬件加電,如果一加電電路燒了冒煙,后續(xù)的測試當(dāng)然進行不去了,也就是能加電是后面測試的前提條件。借鑒到軟件中來就是只有軟件的基本功能正確的情況下,后續(xù)的開發(fā)和測試才能進行。冒煙測試一般和每日構(gòu)建一起實施。
今天要向讀者推薦的工具名稱叫SmokeTest,是.NET領(lǐng)域中一個程序集測試工具,是以程序集為單元的測試工具。
官方對SmokeTest的介紹如下:
SmokeTest lets you invoke any member of a class interactively. An indispensable tool for anyone involved in developing, testing, and managing Windows .NET projects.
地址如下:http://smoketest.wesleysteiner.com/
SmokeTest可以讓我們測試一個程序集中的方法,而不用寫任何代碼。使用這個工具,我們可以創(chuàng)建對象的實體(調(diào)用構(gòu)造方法),調(diào)用方法,獲取或設(shè)置屬性,并操作調(diào)用的結(jié)果。
? Create an instance of any Class? 創(chuàng)建對象實體(調(diào)用構(gòu)造方法)?
? Call any Method 調(diào)用方法?
? Get and set any Property? 獲取屬性值或設(shè)置屬性值?
? Read and write any Field? 讀取或設(shè)置字段值?
? Create and edit object instances to pass as arguments 創(chuàng)建并編輯對象實體,并將它傳遞到方法的參數(shù)中?
? Drill-down and smoke-test the returned result 鉆取返回結(jié)果集
一個可測試的類型(smoke-testable)必須是值類型(ValueType)或引用類型(class),不支持泛型類或接口的測試。
1 測試.NET DateTime 類型方法和屬性
在左邊的樹型結(jié)構(gòu)中,瀏覽到mscrolib的System命名空間下點擊DateTime結(jié)點,點擊Properties中的DateTime.Now
看到右下的黃色窗體輸出系統(tǒng)的當(dāng)前時間。
再轉(zhuǎn)到Methods方法選項卡中測試IsLeapYear,輸入?yún)?shù)2016,點Call按鈕后看到右下腳結(jié)果窗體中輸出true。
2 測試無返回值方法
public static void Add() { Console.WriteLine("Test"); }輸出窗體返回(null),表示無返回值。
3 測試兩個整數(shù)相加的方法
public static int Add(int a, int b) { return a + b; }我們在參數(shù)欄中輸入?yún)?shù)1,2,看到輸出窗體返回結(jié)果3。
4 方法的參數(shù)是對象類型
public static int ExecuteScalar(SqlConnection connection, CommandType commandType, string commandText) { //pass through the call providing null for the set of SqlParameters return ExecuteNonQuery(connection, commandType, commandText, (SqlParameter[])null); }我們的第一個參數(shù)是SqlConnection對象,第二個參數(shù)是枚舉類型。當(dāng)選擇此方法之后,參數(shù)窗體中如下所示。
點擊第一個參數(shù)SqlConnection后面的按鈕,打開窗體選擇有參數(shù)的構(gòu)造方法,填寫連接字符串信息點擊Create按鈕
關(guān)閉此窗體,回到主窗體,再輸入comandText參數(shù)表示的SQL語句
SELECT COMPANY_NAME FROM dbo.GBPARM點Call按鈕后看到結(jié)果輸出窗體顯示數(shù)據(jù)庫中的返回值。
從這一步中看到,SmokeTest具備參數(shù)實例化能力,它可以向參數(shù)傳遞值來創(chuàng)建參數(shù)的實例,從而完成被測試方法的參數(shù)值傳遞。
5 方法的返回結(jié)果是集合類型或?qū)ο箢愋?/h3> public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandType, string commandText) { //pass through the call providing null for the set of SqlParameters return ExecuteDataset(connection, commandType, commandText, (SqlParameter[])null); }
這個方法的返回類型是DataSet,執(zhí)行之后結(jié)果輸出窗口顯示
點擊右邊的DataSet按鈕,我們可以對ExecuteDataSet方法的返回值進行操作。按照下圖中的字母順序,依次點擊,可可觀察到3號窗體(中間窗體)返回結(jié)果為1,這正是調(diào)用上面的SQL語句返回的數(shù)據(jù)集DataSet的Table的數(shù)量。
如果DataSet按鈕可以以可視化的方式(DataGridView控件)顯示數(shù)據(jù)就更完善了。
6 重復(fù)N次調(diào)用測試方式
注意上面的Call按鈕后面有個x 1下拉選項,里面1-1000000選項。默認點x1表示調(diào)用測試方法一次,如果選擇其它數(shù)值,則可以調(diào)用測試方式N次。目前有以下幾個選項值:
在下面的下拉框中會記錄每次調(diào)用的調(diào)用耗費的時間,調(diào)用次序。
7 .NET Reflector 插件
SmokeTest的作者還為它設(shè)計了.NET Reflector插件,借助于.NET Reflector設(shè)計精良的程序集瀏覽能力,邊查看源代碼,邊測試方法。
插件下載地址:http://smoketest.wesleysteiner.com/smoketest_raddin_1_0.zip
8 NUnit, MS Test ,TestDriven.NET,SmokeTest
前二種需要編寫程序代碼,是.NET單元測試領(lǐng)域的主要工具。
//NUnit [TestFixture] public class UserTest { [Test] public void LoginTest() { User user = SessionManaer.Login("admin","cnblogs"); Assert.IsTrue(user!=null); } } //MSTest [TestClass] public class UserTest { [TestMethod] public void LoginTest() { User user = SessionManaer.Login("admin","cnblogs"); Assert.IsTrue(user!=null); } }TestDriven.NET是建立在NUnit或MSTest技術(shù)基礎(chǔ)上的一個擴展工具,支持在任何方法、類、源文件、命名空間、工程中直接單擊即可運行測試。
注意TestDriven.NET測試的方法不一定需要Test或TestMethod特性(attribute),您只需要在一個方法內(nèi)部點擊Test按鈕,即可完成代碼的測試。
SmokeTest則是以.NET程序集為基礎(chǔ)的代碼測試工具,使用SmokeTest不需要寫代碼,只需要借助于它的參數(shù)生成工具,填寫參數(shù)值即可執(zhí)行靜態(tài)方法或?qū)傩缘臏y試。
原文地址:http://www.cnblogs.com/JamesLi2015/p/5544629.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的.NET 程序集单元测试工具 SmokeTest 应用指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET开发者如何使用MyCat
- 下一篇: .NET Core 系列5 :使用 Nu