Test Driven C# 讀書筆記(上)

來源:互聯網
上載者:User

測試驅動開發允許你在更好的瞭解問題之前不做出任何決定;在具備足夠的關於產品將如何被開發的知識

之前,你不需要提出一個完美的架構;

一個最簡單的測試:
所謂實踐出真知,現在來做一個做簡單的例子;我們不使用任何特殊的工具;
一個計算矩形面積和周長的程式:

public class Quad
 {
     public int Area(int length, int width)
     {
         return 0;
     }
 }

static void Main(string[] args)
 {
     Quad q = new Quad();
     System.Diagnostics.Debug.Assert(q.Area(3,2) == 6);
 }

執行程式,發生“宣告失敗”的錯誤,很明顯,因為q.Area(3,2)!=6;
接下來寫入程式碼,使q.Area(3,2)==6;
public class Quad
 {
     public int Area(int length, int width)
     {
         return 0;
     }
 }
再次運行,沒有任何問題,一切正常;
接下來,重構測試程式:
public class Quad
 {
  private int m_length;
  private int m_width;

  public Quad( int length, int width)//初始化值
  {
   m_length = length;
   m_width = width;
  }
  public int Area()//計算面積
  {
   return m_length * m_width;
  }
  public int Perimeter()
  {
   return m_length*2+m_width*2;
  }

 }
static void Main(string[] args)
  {
   Quad q = new Quad(3,2);
   System.Diagnostics.Debug.Assert(q.Area() == 6);
   System.Diagnostics.Debug.Assert(q.Perimeter()==10);
  }

是的,沒有發生任何異常;於是我們就用最簡單的形式完成了一次示範TDD(測試驅動開發)的練習;接下

來是對於相關的每一步的摘要:
1.寫下一個失敗的測試:我們選擇了一個看起來最容易實現的測試進行編碼;接下來我們寫了一個計算矩

形面積的最簡單的實現以便編譯它,儘管當我們執行程式的時候它發生了中斷因為面積並不等於6;
2.修改代碼通過測試:修改代碼的過程中,我們用寫入程式碼傳回值6的方法完成了一個最簡單的任務,目標僅

僅是讓程式通過測試,接下來,我們使用了不同的參數強迫我們實現一個適當的演算法來通過測試;
3.接下來我們重構了代碼,使得程式更具有柔韌性,並且更易於理解;

關於TDD,注意到以下幾點:
1.測試證明了代碼,我們可以通過測試很清晰的看到Quad這個類究竟做了些什麼;
2.我們可以通過測試來度量進度;每一個功能都被測試所證明;
3.測試能使每個人都對改變的代碼充滿自信,即使你是一個使用專家編寫的類的C#菜鳥,執行所有測試能

保證你沒有搞糟任何事情;
4.失誤,正如傳遞長度與寬度資料給Area 和 Perimeter方法而不是建構函式一樣,將在重構中被逐步糾

正;
5.當你在現實世界中使用TDD的時候,你會產生大量的測試,所以你需要使用像NUnit這樣的工具組織你的

測試;

使用Nunit進行你的自動化測試:
在成百上千個測試的海洋中,小組成員將頻繁經曆“編寫測試,修改代碼,重構”這樣的周期;本質就是

你可以很有效率的編寫和運行測試;Nunit這樣的架構就是設計來協助你做這些事情的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.