JUnit入門

Javaによるテスト入門

Maria Milusheva

Senior Software Engineer

概要

  • JUnit は最も一般的な Java のテストライブラリ
  • 保守が行き届き、継続的に更新されています

JUnit 5 ロゴの画像

Javaによるテスト入門

JUnit テストの作成

addTwoNumbers() メソッドのテストを書きましょう:

public int addTwoNumbers(int a, int b) {
    return a + b;
}
Javaによるテスト入門

JUnit の@Test アノテーション

  • IDE またはビルドツールで JUnit を導入(例は参考URL)

  • すべてのテストに @Test アノテーションが必要:

import org.junit.jupiter.api.Test;

@Test 
// テストメソッドはここに記述

「アノテーション」— メソッドの扱いをコンパイラやフレームワークに示す特別なメタデータ。@ で始まります。

1 https://www.jetbrains.com/help/idea/junit.html
Javaによるテスト入門

JUnit テストの構造

import org.junit.jupiter.api.Test;

@Test 

void testAddTwoNumbers() {
// Arrange - Given int num1 = 2; int num2 = 2;
// Act - When int actual = addTwoNumbers(num1, num2);
// Assert - Then assertEquals(4, actual); }
Javaによるテスト入門

アサート文

  • 実際の結果と期待結果を手早く比較
  • 一致しなければテスト失敗
  • バグやエラーを早期発見

アサート文を表す図

Javaによるテスト入門

テスト結果

次のアサーションを考えます:

assertEquals(4, actual); // actual == 4 なら成功

成功時は Test passed と表示されます

等しくない場合(例: actual = 5):

org.opentest4j.AssertionFailedError: expected: <4> but was: <5>

引数順に注意。JUnit では最初が期待値です。

Javaによるテスト入門

オーバーフローの追加テスト

@Test 

void testAddTwoNumbers() { // Given int num1 = 2147483647; int num2 = 1; // When int actual = addTwoNumbers(num1, num2); // Then assertEquals(-2147483648, actual); }
Javaによるテスト入門

JUnitとテストの注意点

  • 1つのテストに複数のアサーション可
  • すべて成功でテスト合格
  • すべてのアサーションを一括インポート:
import org.junit.jupiter.api.Assertions.*;
Javaによるテスト入門

補足事項

  • 次はDatacamp独自ツール。IDEでは不要:
import static com.datacamp.util.testing.CustomJUnitTestLauncher.launchTestsAndPrint;
  • import static package.Class.method により、package.Class.method と書かず method だけで呼べます
import static java.lang.Math.max;

...

max(3,5); // Math.max(3, 5) の代わり
Javaによるテスト入門

Ayo berlatih!

Javaによるテスト入門

Preparing Video For Download...