#19 Javaで学ぶテスト(単体テスト)の基本
Javaでクラスやメソッドを書いた後、それが正しく動くかをmainメソッドで毎回手作業で確認していませんか?この記事では、Javaで書いたコードを自動でチェックする「テスト」の基本を解説します。
なぜテストを書くのか
コードを修正するたびに、関連するメソッドが壊れていないかを手作業で確認するのは大変です。テストを用意しておけば、コマンド一つで動作確認ができ、安心してコードを直せるようになります。
JUnitを使ったテストの書き方
JavaではJUnitというテスト用ライブラリが定番です。Mavenを使っている場合はpom.xmlに依存関係を追加して導入します。
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class CalculatorTest {
@Test
void testAdd() {
Calculator calc = new Calculator();
assertEquals(5, calc.add(2, 3));
}
}
メソッドの上に@Testという目印(アノテーション)を付けるだけでテストとして認識されます。assertEquals(期待値, 実際の値)という順番で書くのが決まりです。
異常系もテストしておく
正しい入力だけでなく、境界値(0やマイナスの値など)を渡した時の挙動もテストしておくと安心です。
@Test
void testAddWithZero() {
Calculator calc = new Calculator();
assertEquals(0, calc.add(0, 0));
}
Javaならではの注意点
Javaは静的型付け言語なので、コンパイル時に多くの型ミスは防げますが、ビジネスロジック(計算結果や条件分岐)の正しさまでは保証してくれません。また、assertEqualsは「期待値、実際の値」の順番を間違えやすいので、失敗時のメッセージが分かりにくくなることがあります。順番を意識して書きましょう。
まとめ
テストは「正しく動くことを保証する仕組み」であり、安心してコードを修正するための土台になります。@TestとassertEqualsから始めて、少しずつテストを増やしていきましょう。
関連記事
本ページはプロモーションを含みます。
参考書籍(PR)
Javaをもっと学びたい方には「スッキリわかるJava入門 第4版」がおすすめです。
コメント
コメントを投稿