JUnitのユーザーガイド
以下のJUnitのユーザーガイドを参考にJUnitの基本的な使い方を
まとめました。
基本的な使い方
1、テスト対象クラスを作成する
2、テストメソッドを作成する
3、アノテーションを付けてテストを実行する
4、テスト結果を確認する
1. テスト対象のクラスを作成
Calculator.javaというクラスを作成しています。
足し算・引き算を行う簡単なメソッドを定義しています。
package hogehoge;
public class Calculator {
// テストメソッド:足し算
public int add(int a, int b) {
return a + b;
}
// テストメソッド:引き算
public int subtract(int a, int b) {
return a - b;
}
}
2. テストクラスを作成
CalculatorTest.javaをテストするための
CalculatorTest.javaというクラスを作成しています。
テスト対象のクラス名+Testの形でテストクラスを作ります。
package hogehoge;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class CalculatorTest {
/**
* @throws java.lang.Exception
*/
@BeforeEach
void setUp() throws Exception {
}
/**
* @throws java.lang.Exception
*/
@AfterEach
void tearDown() throws Exception {
}
/**
* 成功パターン 2+3のテストケース
* {@link hogehoge.Calculator#add(int, int)} のためのテスト・メソッド。
*/
@Test
void testAdd1() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result, "2 + 3 should equal 5");
}
/**
* 失敗パターン 8+3のテストケース
* {@link hogehoge.Calculator#add(int, int)} のためのテスト・メソッド。
*/
@Test
void testAdd2() {
Calculator calculator = new Calculator();
int result = calculator.add(8, 3);
assertEquals(5, result, "2 + 3 should equal 5");
}
/**
* テストケース 5-3のテストケース
* {@link hogehoge.Calculator#subtract(int, int)} のためのテスト・メソッド。
*/
@Test
void testSubtract() {
Calculator calculator = new Calculator();
int result = calculator.subtract(5, 3);
assertEquals(2, result, "5 - 3 should equal 2");
}
}
3. アノテーションを付けてテストを実行
テストメソッドに、@Testアノテーションを付けるだけでテスト実行可能です。
上記のコードの場合、testAdd1、testAdd2、testSubtractに@Testを
付けているためテスト実行することができます。
4. テスト結果を確認
実行結果の確認
testAdd1:成功
testAdd2:失敗
testSubtract:成功
よく使う JUnit のアノテーション
1. @Test
最も基本的なアノテーションで、テストメソッドに付けます。
これがないと、そのメソッドはテストとして認識されない
@Test
void testMethod() {
// テスト内容
}
2. @BeforeEach / @AfterEach
各テストメソッドの前後に実行されるメソッドを定義するためのアノテーションです。
テストメソッドの前に共通の初期化処理を行ったり、テスト後に後処理を行ったりする。
@BeforeEach
void setUp() {
// テストごとに実行される処理
}
@AfterEach
void tearDown() {
// テスト後に実行される処理
}
3. @BeforeEach / @AfterEach
@BeforeEach と @AfterEach が各テストメソッドごとに実行されるのに対して
@BeforeAll と @AfterAll はクラス全体で 1 回だけ実行されます。
これらは静的メソッドに付ける必要がある。
@BeforeAll
static void initAll() {
// テストクラス全体で一度だけ実行される処理
}
@AfterAll
static void tearDownAll() {
// テストクラス全体で一度だけ実行される処理
}