首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET Compact Framework 單元測試實戰:NUnitLite 入門指南

     編輯:關於.NET

在 Windows CE / Mobile 設備上進行 .NET CF 代碼單元測試,可使用輕量級 NUnitLite(NUnit 簡化版)。本文記錄從構建庫到編寫測試、運行輸出的完整流程。

獲取並構建 NUnitLite

  • 源碼:CodePlex 最後版本 NUnitLite-0.2.0.zip(現遷移至 Launchpad)。
  • 打開 src\NUnitLiteCF 專案編譯,產出 NUnitLite.dll。

項目集成與 Test Runner

  1. 引用 NUnitLite.dll。
  2. Main 入口啟動 Runner:
static void Main(string[] args)
{
    using (var writer = new StreamWriter(@"\Test\TestResult.txt"))
    {
        new NUnitLite.Runner.TextUI(writer).Execute(args);
    }
}

支援 TextUI(文件)、ConsoleUI(控制台)、DebugUI(調試輸出)、TcpUI(TCP 傳輸) 多種輸出。

測試夾具與屬性

  • [TestFixture]:標識測試類。
  • [SetUp] / [TearDown]:每測試前後執行,初始化/釋放資源。
  • [Test]:標識測試方法。
  • [ExpectedException(typeof(AppException))]:驗證異常拋出。

斷言風格:Assert.That + Is 組合

NUnitLite 不提供 AreEqual 等傳統方法,統一使用:

Assert.That(actual, Is.EqualTo(expected));
Assert.That(value, Is.GreaterThan(0));
Assert.That(reader.IsClosed, Is.False);
Assert.That(reader["f2"], Is.EqualTo("xyz"));

完整測試案例:SqlCeHelper

[TestFixture]
class SqlCeHelperTest
{
    private SqlCeHelper sqlCe = new SqlCeHelper();

    [SetUp] public void SetUp() => sqlCe.Open();
    [TearDown] public void TearDown() => sqlCe.Close();

    [Test]
    public void ExecuteNonQueryTest()
    {
        int i = sqlCe.ExecuteNonQuery("delete from t");
        Assert.That(i, Is.GreaterThan(-1));
        i = sqlCe.ExecuteNonQuery("insert into t (f1,f2) values (1,'abc')");
        Assert.That(i, Is.GreaterThan(-1));
    }

    [Test]
    public void ExecuteReaderTest()
    {
        var reader = sqlCe.ExecuteReader("select * from t");
        Assert.That(reader, Is.Not.Null);
        Assert.That(reader.IsClosed, Is.False);
        while (reader.Read())
            Assert.That(reader["f2"], Is.EqualTo("abc"));
        reader.Close();
    }

    [Test]
    public void ExecuteDataSetTest()
    {
        var ds = sqlCe.ExecuteDataSet("select * from t");
        foreach (DataRow dr in ds.Tables[0].Rows)
            Assert.That(dr["f2"], Is.EqualTo("xyz"));
    }

    [Test]
    [ExpectedException(typeof(ApplicationException))]
    public void ThrowsException() => throw new ApplicationException("test");
}

運行結果輸出示例

NUnitLite version 0.2.0
Runtime: Windows CE 5.0 / .NET 2.0.7045.0
4 Tests : 0 Errors, 1 Failures, 0 Not Run
Failures:
1) ExecuteReaderTest : Expected True But was: False

小結

NUnitLite 為 .NET CF 提供了標準化單元測試能力,語法與 NUnit 高度一致,支援豐富斷言與異常驗證,是設備端測試的首選方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved