JUnitの基本アノテーション
はじめに
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
JUnitは、Javaのプログラムが正しく動いているかを確認するためのテストツールです。
「テスト」を簡単に書けるようにしてくれるテストフレームワークです。
今回はその中で良く使う基本のアノテーションを紹介します。
@Test
JUnitで最初に覚えるべきは@Testアノテーションです。
これは「ここからテストが始まるよ」とJUnitに教えてあげるものです。
1 2 3 4 5 6 7 |
@Test public void testAddition() { assertEquals(4, Calculator.add(2, 2)); } |
この例では、Calculatorクラスのaddメソッドが正しく動くかをテストしています。
2+2が4になることを確認しています。
@Testをつけることで、このメソッドがテストだとJUnitが理解します。
@BeforeEachと@AfterEach
テストの事前処理が必要だったり、事後処理で何かをクリアしたい場合があります。
そんな時に使うのが@BeforEacheと@AfterEachです。
1 2 3 4 5 6 7 8 9 |
@BeforeEach public void setUp() { System.out.println("テストの準備をします"); } @AfterEach public void clear() { System.out.println("テストの事後処理をします"); } |
@BeforeEachは各テストの前に、@AfterEachは各テストの後に実行されます。
例えば、テストの前にデータベースに接続して、テストの後に接続を切るような使い方ができます。
@ParameterizedTest
@ParameterizedTestを使うと、一つのテストメソッドで複数のケースをテストできます。
1 2 3 4 5 6 7 8 9 |
@ParameterizedTest @ValueSource(ints = {1, 3, 5, -3, 15, Integer.MAX_VALUE}) void testIsOdd(int number) { assertTrue(MyMath.isOdd(number)); } |
この例では、1, 3, 5, -3, 15, そしてIntegerの最大値が奇数かどうかを一度にテストしています。これで、複数のメソッドを書かずにたくさんの数を簡単にテストできます。
@Timeout
@Timeoutを使うと、テストの実行時間に制限を設けることができます。
1 2 3 4 5 6 7 8 9 |
@Test @Timeout(value = 100, unit = TimeUnit.MILLISECONDS) void testLongRunningOperation() { // 時間のかかる処理 } |
この例では、テストが100ミリ秒以上かかるとエラーになります。
これで、プログラムが遅すぎないかも確認できます。
最後に
今回紹介した5つのアノテーションは、JUnitの一部です。
これ以外にもたくさんの便利なアノテーションがJUnitには用意されています。
これらを使いこなすことで、より効率的で信頼性の高いテストが書けるようになります。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>