JUnit5が起動できないエラーの対処方法です。
自分が実装している環境は以下の通りです。
- IDE=Eclipse
- SpringBootプロジェクト
- JUnit5ライブラリを使用
実装したコード(テスト対象クラス)
public class Lesson5 {
/**
* シンプルなメソッド定義、メンバメソッドとスタティックメソッドの実装
*/
public void code5_1() {
System.out.println("湊さん、こんにちは");
}
}
テストクラス
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class Lesson5Test {
private static Lesson5 target;
@BeforeAll
public static void init() {
target = new Lesson5();
}
@Test
public void code5_1Test() {
target.code5_1();
}
}
まず結論としては、Springframeworkのアプリケーションで実装するクラスでないとうまくいかないというところです。つまりは、Springフレームワークのアノテーションをつけたクラスのテストでないとうまく動かないという事です
そして、自分の目的としては単純に単体テストを実行したいだけなので、SpringBootは不要だというところです。
今は使わないけど、後々にSpringBootの機能を使用したいのでこの様なつくりになっています。
単体テストを行うのにJUnit5で行おうとしたけども、「JUnitクラスが見つかりません。」という文言がポップアップされてテストが動きませんでした。
なので、JUnit5ではなく、JUnit4を使用するように修正しました。
具体的には、使用している以下のクラスを次のものに変更しました。
<変更前>
org.junit.jupiter.api.Test;
<変更後>
org.junit.Test
修正後JUnitクラス
import org.junit.BeforeClass;
import org.junit.Test;
public class Lesson5Test {
private static Lesson5 target;
@BeforeClass
public static void init() {
target = new Lesson5();
}
@Test
public void code5_1Test() {
target.code5_1();
}
}
これでJUnitが動くようになります。無理をしてJUnit5を使用する必要はどこにもありませんでした。
そして、おかしなことに改めてJUnit5のコードに直したらうまく動きました。
ちなみに、@SpringBootアノテーションを消して実装していますが、これも「JUnitクラスが見つかりません」というポップアップが表示されました。
public class Lesson5Test {
private static Lesson5 target;
@BeforeAll
public static void init() {
target = new Lesson5();
}
@Test
public void code5_1Test() {
target.code5_1();
}
}
ふしぎな。。。