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