C#中級

中級 C#で学ぶテスト駆動開発|ケーススタディ編

導入

テスト駆動開発(TDD)は、ソフトウェア開発のプロセスにおいて、テストを先に書くことでコードの品質を高める手法です。この手法を実務で適用する際には、さまざまなシチュエーションが考えられます。本記事では、架空のプロジェクトを通じて、C#を用いたテスト駆動開発の実践的なアプローチを解説します。

教科書レベルの解説(テスト駆動開発)

重要な概念の整理

テスト駆動開発は、以下の3つのステップから成り立っています。

  • テストを書く: まず、実装したい機能に対するテストケースを作成します。
  • 実装する: テストが通るように最小限のコードを実装します。
  • リファクタリング: コードを整理し、クリーンな状態に保ちます。

これらのステップを繰り返すことで、機能追加やバグ修正を行うたびにコードの品質を維持します。

コード例(C#)


using System;
using System.Collections.Generic;

public class ShoppingCart
{
    private List items = new List();

    public void AddItem(Item item)
    {
        items.Add(item);
    }

    public decimal CalculateTotal()
    {
        decimal total = 0;
        foreach (var item in items)
        {
            total += item.Price;
        }
        return total;
    }
}

public class Item
{
    public string Name { get; }
    public decimal Price { get; }

    public Item(string name, decimal price)
    {
        Name = name;
        Price = price;
    }
}

コードの行ごとの解説

  1. using System; – C#の基本的な名前空間をインポートします。
  2. using System.Collections.Generic; – リストなどのコレクションを使用するために必要です。
  3. public class ShoppingCart – ショッピングカートを表すクラスを定義します。
  4. private List items = new List(); – カート内のアイテムを管理するリストを初期化します。
  5. public void AddItem(Item item) – アイテムをカートに追加するメソッドを定義します。
  6. public decimal CalculateTotal() – カート内のアイテムの合計金額を計算するメソッドです。
  7. foreach (var item in items) – リスト内の各アイテムに対して合計金額を計算します。

ケーススタディ編

架空のオンラインストアプロジェクトでは、ショッピングカート機能の実装が求められました。このプロジェクトでは、テスト駆動開発を用いて、カートにアイテムを追加し、合計金額を計算する機能を実装します。

まず、最初にテストを書くところから始めます。カートにアイテムを追加した際に、合計が正しく計算されるかどうかを確認するテストケースを作成します。次に、テストが通るように実装を行います。このプロセスを通じて、実際に直面した問題として、アイテムの価格が負の値である場合にどう対処するかが挙げられます。このようなケースでは、エラーハンドリングを考慮する必要があります。

まとめ

  • テスト駆動開発は、コードの品質を向上させるための強力な手法です。
  • 具体的なシチュエーションに応じて、テストケースを設計し、実装することが重要です。
  • エラーハンドリングや特殊なケースを考慮することで、より堅牢なコードを実現できます。