私はEclipse Oxygen.3リリース(4.7.3)を使用しています。以下は、私のJUnitテストクラスです。
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
class MyMathTest {
MyMath myMath = new MyMath();
@Before
public void before() {
System.out.println("Before");
}
@After
public void after() {
System.out.println("After");
}
@Test
public void testSum_with3numbers() {
System.out.println("Test1");
int result = myMath.sum(new int[] {1,2,3});
int expected = 6;
assertEquals(expected, result);
}
@Test
public void testSum_with1numbers() {
System.out.println("Test2");
int result = myMath.sum(new int[] {3});
int expected = 3;
assertEquals(expected, result);
}
@BeforeClass
public static void beforeClass() {
System.out.println("Before class");
}
@AfterClass
public static void afterClass() {
System.out.println("After class");
}
}
このJunitテストを実行すると、Eclipseがポップアップダイアログを表示し続けます「テストランナー 'JUnit 5'でテストが見つかりませんでした」。どうして?
テストクラスはorg.junit
パッケージのアノテーションを使用するため、現在JUnit 4に基づいています。
したがって、EclipseでJUnit 4テストクラスとして実行するには、「実行構成」でJUnit 4ランナーを選択する必要があります。緑色の円の横にある小さな矢印(下向き)をクリックします(Eclipse IDEの上部にある)。テストクラスが表示され、JUnit 4ランナーとJUnit 5ランナーを切り替えることができます。
一方、JUnit Jupiter(つまり、JUnit 5のプログラミングモデル)を使用してテストを作成することが目的の場合は、org.junit
のアノテーションからorg.junit.jupiter.api
に切り替える必要があります。
Eclipse 2019-09(4.13)には、「テストランナー 'JUnit 5'でテストが見つかりませんでした」というエラーが発生する可能性があるバグがあります: https://bugs.Eclipse.org/bugs/show_bug.cgi?id = 551298
次の依存関係をプロジェクトに追加しましたが、うまくいきました。
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
<version>1.5.2</version><!--$NO-MVN-MAN-VER$-->
<scope>test</scope>
</dependency>
私のテストメソッドがプライベートとして宣言され、JUnitがそれを検出できなかったため、これは私に起こりました。私がそれを公開した後、それはもちろん@Testアノテーションで期待通りに機能しました。
JUnit 5の依存関係を持つJUnit 4アノテーションを使用しています。 JUnit 5を使用する場合は、次のものを置き換える必要があります。
「@ Before」と「@BeforeEach」
'@ AfterEach'と '@AfterEach'
「@ BeforeAll」と「@BeforeAll」
「@ AfterAll」と「@AfterAll」
JUnit 5アノテーションの詳細 https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations/
インポートをもう一度見てみましょう。
import org.junit.Test;
をインポートします(JUnit 4でのテストケースの実行に使用されます)
JUnit5でケースを実行するには、import org.junit.jupiter.api.Test;
をインポートする必要があります。
同じエラーが発生しましたが、すべて試しましたが、JUnitライブラリが追加されていないことに気付きました。したがって、追加後、テストは意図したとおりに機能しました。
テストクラスはパブリックではありません、それをパブリックにすると機能します