Javaユニットテスト:バグの早期発見と品質向上

この記事では、Javaユニットテストを行う方法について説明します。ユニットテストは、コードの正確性を確認し、バグを早期に発見するのに役立つ重要な開発手法です。

目次

  1. JUnitの導入
  2. ユニットテストの基本概念
  3. テストケースの作成
  4. アサーションの使用
  5. テストスイートの実行

JUnitの導入

Javaユニットテストを行うには、JUnitというテストフレームワークを使用します。MavenやGradleを使っている場合は、依存関係を追加することができます。

Maven

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>5.8.0</version>
  <scope>test</scope>
</dependency>

Gradle

testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.0'

ユニットテストの基本概念

JUnitでは、次のような基本概念があります。

  • テストクラス: テストケースを含むクラスです。
  • テストケース: 個々のテスト面です。
  • アサーション: テストの結果を検証するためのメソッドです。

テストケースの作成

以下の例では、Calculator クラスに対する簡単なテストケースを作成します。

Calculator クラス:

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

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

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

  public int divide(int a, int b) {
    if (b == 0) {
      throw new ArithmeticException("Cannot divide by zero");
    }
    return a / b;
  }
}

CalculatorTest クラス:

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.Test;

public class CalculatorTest {

  @Test
  public void testAdd() {
    Calculator calculator = new Calculator();
    assertEquals(5, calculator.add(2, 3));
  }

  @Test
  public void testSubtract() {
    Calculator calculator = new Calculator();
    assertEquals(-1, calculator.subtract(2, 3));
  }

  @Test
  public void testMultiply() {
    Calculator calculator = new Calculator();
    assertEquals(6, calculator.multiply(2, 3));
  }

  @Test
  public void testDivide() {
    Calculator calculator = new Calculator();
    assertEquals(2, calculator.divide(4, 2));
  }

  @Test
  public void testDivideByZero() {
    Calculator calculator = new Calculator();
    assertThrows(ArithmeticException.class, () -> calculator.divide(4, 0));
  }
}

アサーションの使用

JUnitでは、アサーションを使用してテストケースの結果を検証します。主要なアサーションメソッドには以下のものがあります。

  • assertEquals: 期待される値と実際の値が等しいかどうかをテストします。
  • assertTrue: 式がtrueであるかどうかをテストします。
  • assertFalse: 式がfalseであるかどうかをテストします。
  • assertNull: オブジェクトがnullであるかどうかをテストします。
  • assertNotNull: オブジェクトがnullでないことをテストします。
  • assertThrows: 例外がスローされることをテストします。

テストスイートの実行

テストスイート全体またはシングルテストの実行は、IDEやビルドツールを使用して行い、結果を確認できます。

この記事を参考にして、Javaユニットテストを行い、バグの早期発見と品質向上に向けて取り組んでみましょう。それでは、Happy testing!