Java中級

中級 Javaで学ぶテスト駆動開発|練習問題編

導入

テスト駆動開発(TDD)は、ソフトウェア開発において品質を確保するための強力な手法です。特に中級エンジニアにとって、TDDは単なるテストの実施に留まらず、設計や実装の思考を深めるための重要なプロセスです。この記事では、実務で直面する具体的なシチュエーションを取り上げ、その実践的なアプローチを学びます。

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

重要な概念の整理

TDDの基本的な流れは「テストを書く → 実装する → リファクタリングする」のサイクルです。このプロセスを通じて、コードの品質を向上させることができます。特に、実装前にテストを書くことで、要件を明確にし、バグの早期発見につなげることができます。

実務においては、特に「テストを書く際の視点」が重要です。どのような条件下でテストが成功し、失敗するのかを意識することが、後の実装やリファクタリングに大きく影響します。

コード例(Java)


public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public int subtract(int a, int b) {
        return a - b;
    }
}

コードの行ごとの解説

  1. public class Calculator: 計算機能を提供するクラスを定義します。
  2. public int add(int a, int b): 2つの整数を受け取り、その合計を返すメソッドです。
  3. return a + b: 引数として受け取った2つの整数の合計を計算し、返します。
  4. public int subtract(int a, int b): 2つの整数を受け取り、その差を返すメソッドです。
  5. return a – b: 引数として受け取った2つの整数の差を計算し、返します。

練習問題編

以下の練習問題に取り組んで、TDDの理解を深めてください。

  1. 問題1: 乗算を行うメソッドをCalculatorクラスに追加してください。テストケースも作成し、TDDの手法に従って実装してください。
  2. 問題2: 負の数に対する加算メソッドのテストケースを作成し、期待通りの結果が得られるか確認してください。
  3. 問題3: 2つの整数の最大公約数を計算するメソッドを追加し、そのテストケースを作成してください。

模範解答と解説

問題1: 乗算メソッドの追加例:


public int multiply(int a, int b) {
    return a * b;
}

テストケース:


@Test
public void testMultiply() {
    Calculator calculator = new Calculator();
    assertEquals(20, calculator.multiply(4, 5));
}

問題2: 負の数のテストケース例:


@Test
public void testAddNegativeNumbers() {
    Calculator calculator = new Calculator();
    assertEquals(-1, calculator.add(-2, 1));
}

問題3: 最大公約数のメソッドとテストケース:


public int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

テストケース:


@Test
public void testGcd() {
    Calculator calculator = new Calculator();
    assertEquals(2, calculator.gcd(4, 6));
}

まとめ

  • TDDは要件を明確にし、品質を向上させる手法である。
  • テストを書くことで、実装時の思考が整理され、バグの早期発見につながる。
  • 実務における具体的なシチュエーションを想定し、コードとテストを通じて学ぶことが重要である。