Golang でのテスト駆動開発の実践経験
概要:
テスト駆動開発 (TDD) は一般的なソフトウェア開発手法です。実際のコードを作成する前に機能を検証するテスト コードを作成することに重点が置かれています。テスト コードを作成することで、開発者は要件をより深く理解し、インターフェイスを正確に定義し、コードの品質と保守性を向上させることができます。この記事ではGolang言語を例に、実際のプロジェクトでTDD開発を活用する方法を紹介します。
Golang には、選択できる依存関係管理ツールが多数あります。一般的なものには go mod、dep などが含まれます。 go mod を例として、次のコマンドを使用してプロジェクトを初期化します。
go mod init <项目名>
_test.go
という接尾辞が付けられ、関数名の前に Test
が追加されます。 単純な電卓を例として、calculator_test.go
のファイルを作成し、テスト コードを記述します:
package main import ( "testing" ) func TestAdd(t *testing.T) { c := add(2, 3) if c != 5 { t.Error("Expected 5, got ", c) } } func TestSubtract(t *testing.T) { c := subtract(5, 2) if c != 3 { t.Error("Expected 3, got ", c) } }
calculator.go
ファイルに記述できます。 package main func add(a, b int) int { return a + b } func subtract(a, b int) int { return a - b }
go test
出力にエラーがない場合、テストは成功します。
たとえば、乗算演算をテストするテストを追加できます:
func TestMultiply(t *testing.T) { c := multiply(4, 3) if c != 12 { t.Error("Expected 12, got ", c) } }
次に、関数コードに乗算関数を追加します:
func multiply(a, b int) int { return a * b }
Run again go test
コマンドでテストに合格した場合、反復開発が正しいことを意味します。
たとえば、電卓では、除数が 0 の場合を考慮する必要があります。次のテストを追加できます:
func TestDivideByZero(t *testing.T) { defer func() { if r := recover(); r != nil { if r != "divide by zero" { t.Error("Expected 'divide by zero' error") } } else { t.Error("Expected 'divide by zero' error") } }() divide(5, 0) }
次に、関数コードに除算関数を追加します:
func divide(a, b int) int { if b == 0 { panic("divide by zero") } return a / b }
テストを実行すると、合格したテスト結果が得られます。
要約:
TDD 開発を通じて、コードの品質と保守性を向上させることができます。 Golang では、テスト コードを記述することで、要件をより深く理解し、インターフェイスを正確に定義し、コードの正確性を確認できます。
TDD は開発時間と作業負荷を増加させますが、その後のデバッグとメンテナンスの時間を削減し、開発効率とコードの品質を向上させることができます。したがって、実際のプロジェクト、特に複雑なロジックや頻繁な要件変更を伴うプロジェクトでは、TDD は非常に重要です。
この記事の導入部を通じて、読者が Golang でのテスト駆動開発の実際の経験をよりよく理解し、応用できることを願っています。一緒に高品質なコードを作成しましょう!
以上がGolang でのテスト駆動開発の実務経験の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。