Junitを使ったことがないので、勉強したメモ。
Eclipse環境で学習しています。
バージョン:Oxygen.3a Release (4.7.3a)
JUnit
Eclipseで、Junit3, Junit4, Junit Jupiterの3つが選べた。
JUnit5は、JUnit Jupiterのことらしい。
作ってみる
参考にさせていただいたLink
テスト(Unitテスト)関連
基本的な作り方が参考になりました。
ひしだま's ホームページ
→JUnit5 テストの記述
Junit5について、参考になりました。
メモ
- Junit5を使用
- テスト対象プロジェクト(テスト対象のソースファイル)と、テストプロジェクト(テストコードが書かれたソースファイル。今回の目的)を2つ用意(分けなくても作れる)
- テスト対象プロジェクトのパスを、テストプロジェクトに通しておく
- テスト対象プロジェクトに、Junitのjarはいらない。
- テストプロジェクトには、JunitのJarを通しておく。
- テストコードを作るときは、テストしたいソースファイルを選択して、 右クリック→新規→そのた→JunitのJunit・テストケースを選択
OK,NGが混在すると、1つでもNGがあれば、結果NGになる???
そんな気もしたような。。。
package pkg;
import static org.junit.Assert.*;
import org.junit.jupiter.api.Test;
class EvalTest {
@Test
void testIsOdd() {
//fail("まだ実装されていません");
Eval eval = new Eval();
//7(奇数)を引数で戻り値がfalseであることをテスト(テストNGパターン)
assertFalse(eval.isOdd(7));
//100(偶数)を引数で戻り値がfalseであることをテスト(テストOKパターン)
assertFalse(eval.isOdd(100));
}
}
EclipseでJunitを作ってしまうと、テスト対象クラスに後から作ったメソッドのテストメソッドって自動では作れないのかな。。
@DisplayName("表示したい文字列")
実行結果の表示で、実行したテストメソッド名出るところが、このアノテーション(?)を指定しておくと、置き換わる。
package pkg;
public class checkClass {
String isNull(String s) {
String result = null;
if(s != null) {
result = "notNull";
}
return result;
}
}
package pkg;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
class checkClassTest {
@Test
void testIsNull() {
//fail("まだ実装されていません");
checkClass cc = new checkClass();
assertNull(cc.isNull(null));
}
@Test
@DisplayName("戻り値がNULLか、NULL以外か")
void testIsNull2() {
//fail("まだ実装されていません");
checkClass cc = new checkClass();
assertNotNull(cc.isNull("NOT NULL"));
}
}