測試驅動開發(TDD)入門與實作教學

測試驅動開發(Test-Driven Development,簡稱TDD)是一種軟體開發方法,其中開發人員先寫出失敗的測試案例,然後才撰寫能夠讓測試通過的代碼,最後進行代碼的重構。TDD 的目標是實現快速反饋、提高代碼質量和促進簡單設計。

TDD 的基本步驟

TDD 的開發循環遵循「紅-綠-重構」的模式:

  1. 紅色階段(Red):先寫一個失敗的測試。這個測試應該基於你希望程序執行的下一個功能。
  2. 綠色階段(Green):撰寫足夠的代碼讓這個測試通過。這時候的代碼不追求完美,只需通過測試即可。
  3. 重構階段(Refactor):重構代碼,改善結構與設計,同時保證所有測試仍然通過。

使用 C# 實作 TDD

接下來,讓我們透過一個簡單的 C# 實例來看看 TDD 是如何在實際開發中運作的。

前提條件

確保你的開發環境中安裝了 .NET Core SDK,並且你熟悉基本的 C# 編程和單元測試。

實作步驟

假設我們要開發一個簡單的函式庫,用於計算兩個數字的和。

步驟 1:創建一個新的解決方案

1
dotnet new sln -n TDDExample

步驟 2:添加一個類庫項目和一個測試項目

1
2
3
4
5
dotnet new classlib -n CalculatorLibrary
dotnet new xunit -n CalculatorLibrary.Tests
dotnet sln add CalculatorLibrary
dotnet sln add CalculatorLibrary.Tests
dotnet add CalculatorLibrary.Tests reference CalculatorLibrary

步驟 3:紅色階段

在 CalculatorLibrary.Tests 項目中添加一個測試案例,用於測試加法函數。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

using Xunit;
using CalculatorLibrary;

namespace CalculatorLibrary.Tests {
public class CalculatorTests {
[Fact]
public void Add_ShouldCalculateCorrectSum() {
// Arrange
var calculator = new Calculator();
// Act
var result = calculator.Add(5, 5);
// Assert
Assert.Equal(10, result);
}
}
}

步驟 4:綠色階段

在 CalculatorLibrary 項目中實現 Calculator 類和 Add 方法。

1
2
3
4
5
6
7
8

namespace CalculatorLibrary {
public class Calculator {
public int Add(int a, int b) {
return a + b;
}
}
}

步驟 5:運行測試

使用以下命令運行測試,確認它通過。

1
dotnet test

步驟 6:重構階段

這時候,如果有需要,可以對代碼進行重構,以改善代碼質量或結構。重要的是,重構後要確保所有測試仍然通過。

結語

透過 TDD,你可以逐步建構出高質量的軟體,同時保證每一步開發都有明確的目標和反饋。雖然一開始可能會覺得這個過程有點繁瑣,但是隨著習慣,你會發現這是一種能夠提高開發效率和代碼質量的強大工具。

這篇文章只是一個入門級別的示例,TDD 的世界遠遠不止這些。隨著你深入研究,會發現更多高級技巧和策略,能讓你的開發流程更加高效、代碼更加健壯。希望這篇文章能給你一個好的開始!