Java テスト JUnitクラスが見つかりません with Spring Boot

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();
    }
}

ふしぎな。。。

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す