Rust

【Rust】第5章第4回:テストの書き方:単体テストと統合テストの実践

本記事では、Rustにおけるテストの基本概念と、単体テストおよび統合テストの実践方法について詳しく解説します。Rustの標準テストフレームワークを活用することで、バグを未然に防ぎ、信頼性の高いコードを作成できます。

0. 記事の概要

この記事を読むメリット

  • Rustのテストフレームワークの基本を理解: 効率的なテストの書き方を学べます。
  • バグの早期発見: プロジェクトの品質向上につながります。
  • 単体テストと統合テストの違いを学べる: 適切なテスト戦略を立てるのに役立ちます。

この記事で学べること

  • Rustのテストの基本構文
  • 単体テストと統合テストの書き方
  • テスト駆動開発の基礎

1. Rustのテストの基本

1.1 テストの基本構文

Rustでは、標準のテストフレームワークを使用してテストを実行できます。以下は基本的なテストの書き方です。

#[test]
fn test_addition() {
    assert_eq!(2 + 2, 4);
}

動作解説

#[test]アトリビュートを関数に付与することで、その関数がテストとして実行されるようになります。

2. 単体テストの書き方

2.1 基本的な単体テスト

単体テスト(Unit Test)は、個々の関数が正しく動作するかを確認するために使用されます。

fn add(a: i32, b: i32) -> i32 {
    a + b
}

#[test]
fn test_add() {
    assert_eq!(add(2, 3), 5);
}

動作解説

add関数が正しく動作することを確認する単体テストです。

3. 統合テストの書き方

3.1 統合テストの基本

統合テスト(Integration Test)は、複数のモジュールや関数が正しく連携するかを確認するために使用されます。

// tests/integration_test.rs
use my_crate::add;

#[test]
fn test_add_integration() {
    assert_eq!(add(5, 10), 15);
}

動作解説

統合テストは、testsディレクトリ内に作成され、モジュール間の連携を確認します。

4. よくあるエラーと対処法

  • 「test failed」エラー: 期待される値と実際の値が一致しない場合に発生。
  • 「unresolved import」エラー: テスト対象の関数が正しくインポートされていない場合に発生。

5. まとめ

本記事では、Rustの単体テストと統合テストの基本的な書き方を学びました。次回は、ドキュメンテーションの作成と公開方法について詳しく解説します。