單元測試…

來源:互聯網
上載者:User

TheServerSide.Net上有一篇不錯的文章,“10 Ways to Make Your Code More Testable”(10種讓你的代碼更具可測性的方法),這10種方法中,有幾項不但是讓代碼更具可測性的方法,也是寫代碼時必需遵循的基本Principla,但也有幾項非常有意思的:

只要可行,就讓方法返回一個值。這樣不但可以讓代碼更加容易被測試,而且也更加容易讓調用者瞭解它的運行狀態。不過作者也說了這個方法並非是“非此即彼”,而是“as much as possible”。

對於牽涉到包含了資料庫的操作,這篇文章提出的解決方案就是很常見的Mock Data Access Object,即在測試時使用一個並非真正去讀寫資料庫的假資料存取對象,來類比真正的DAO的行為。

說到牽涉到資料存取的測試,在單元測試領域這的確是一個容易讓人撓頭的問題。在這裡我鄭重推薦MbUnit這個工具,它內建了兩種最常見的解決這個問題的方法,使我們的日子更輕鬆了。

1、RollBackAttribute,這個特性利用COM+的Transaction,將整個測試方法的操作置於一個事務裡面,來達到自動復原的目的。

[Test]
[RollBack]
public void TestMethod()

Roy Osherove有一篇文章比較詳細的對這種方法進行了描述。

2、完整恢複資料庫,這個方法基於一種很簡單的資料恢複方式:在某個地方(通常是測試開始前或結束後),讓資料庫根據我們提供的Backup檔案自動回復。

[TestFixture]
[SqlRestoreInfo("connectionstring","databasename",@"c:\db.bak")]
public class TestClass
{

    [Test]
    [RestoreDatabaseFirst]
    public void TestMethod()

“SqlRestoreInfo”特性提供了必要的連接字串、資料庫名,和Database Backup檔案資訊,“RestoreDatabaseFirst”特性指明了在執行測試方法前先用備份檔案來恢複資料庫。

最後,介紹一個系列文章,Automating Unit Testing With a Base Class Posts,講解了一個進行“自動化”測試的方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.