JUnitとはなんでしょうか
プログラム作成後単体テストをするのはとても大変です。
そんなときに楽にできるツールとして、JUnitがあります。
Javaのプログラムにおける単体テスト(ユニットテスト)を行うためのフレームワークになります。
Javaアプリケーションのコードが正しく動作しているか?を自動的にテストするために利用され、多くのJavaのプログラムに使われています。
なぜJUnitを使うのか?
自動化されたテストで行える
Junitを使うと、コードを手動でテストする必要がなく、テストシナリオを書き、ボタンを押すことで大量のテストを行うことができます。
これによって、開発者のテストをする時間を大幅に省けて、時間を短縮することができます。
バグの早期発見
コードを小さな部分に分割してテストができます。
バグを早期に発見、修正がしやすい形となっています。
回帰テスト
アプリケーションのアップデートをしても、既存の機能が壊れていないのか?確認するために便利です。
品質の向上
テストを自動化することで、品質の高いソフトウェアを効率よく開発すること可能です。
JUnitのテストシナリオ書き方
アノテーションを使って記述する
アノテーション名 | 説明 |
---|---|
@Test | テストメソッドを示します |
@BeforeEach | 各テストの前に実行するメソッドを示します |
@AftereEach | 各テストのあとに実行するメソッドを示します |
@BeforeAll | 全テストの前に一度だけ実行されるメソッドを示します |
@AfterAll | 全テストのあとに一度だけ実行されるメソッドを示します |
アサーションの説明
アサーションとは、Jnitで期待する結果と実際の結果を比較するためにアサーション(assertion)を使います。
以下はよく使われるアサーションになります。
アサーション名 | 説明 |
---|---|
assertEquals(excepted,actual) | 期待する値と実際の値が等しいかを確認します |
assertTrue(condition) | 条件が真であるかを確認します |
assertFalse(condition) | 条件が偽であるかを確認します |
assertNull(object) | オブジェクトがnullであるかを確認します |
assertNotNull(object) | オブジェクトがnullでないかを確認します |
テストの実行例
テストの手法を記述していきます。
まずは普通のプログラムソース
public class Calculator {
Calculator() {
}
public int add(one,two) {
return one + two;
}
}
このソースに対して足し算ができるかのテストケースを書きます。
import static org.junit.Assert.*;
import org.junit.Test;
public class CalculatorTest {
@Test
public void test() {
// 正解の値を記述
int expected = 3;
//インスタンス作成
cal Calculator = new Calculator();
int actual = j042i.cal(2,1);
// 足し算が正しいか?の値を記述する
assertEquals(expected, actual);
}
}
このコードではCalculatorのクラスのaddメソッドが正しく動作しているかをテストします。
assetEqulalsで2と1を足した結果が3であることを確認できます。
JUnitを使用する方法
テスト駆動開発(TDD)でJUnitを使うとTDD(Test0Driven Development)が効果的に行えます。
最初にテストを牡蠣、その後にコードを書いてテストが成功するように開発を進めます。
カバレッジの確認方法
JUnitのテストだけではなく、テストがコード全体をどれだけカバーしているか、カバレッジも確認することが重要です。