web-dev-qa-db-ja.com

Eclipseで「JUnitテストが見つかりません」

だから私はJUnitが初めてなので、宿題に使用しなければなりません。私たちの教授は、1つのテストクラスBallTest.Javaを持つプロジェクトを提供しました。右クリック>実行> JUnitテストを実行すると、「JUnitテストが見つかりません」というポップアップエラーが表示されます。私は質問がここで回答されたことを知っています( テストランナー 'JUnit 4'でテストが見つかりません )、しかし、Eclipseを閉じ、再起動、クリーニング、およびビルドは機能しないようです。以下は、実行構成、ビルドパス、およびテストしようとしているクラスのスクリーンショットです。

Run ConfigurationBuild Path

BallTest.Java

import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class BallTest {

Ball ball;

/**
 * @throws Java.lang.Exception
 */
@Before
public void setUp() throws Exception {
    System.out.println("Setting up ...");
    Point2D p = new Point2D(0,0);
    ball = new Ball(p);
}

/**
 * @throws Java.lang.Exception
 */
@After
public void tearDown() throws Exception {
    System.out.println("Tearing down ...");
    ball = null;
}

/**
 * Test method for {@link Ball#getCoordinates()}.
 */
@Test
public void testGetCoordinates() {
    assertNotNull(ball); // don't need Assert. because of the import statement above.
    Assert.assertEquals(ball.getCoordinates().getX(), 0);
    Assert.assertEquals(ball.getCoordinates().getY(), 0);
}

/**
 * Test method for {@link Ball#setCoordinates(Point2D)}.
 */
@Test
public void testSetCoordinates() {
    Assert.assertNotNull(ball);
    Point2D p = new Point2D(99,99);
    ball.setCoordinates(p);
    Assert.assertEquals(ball.getCoordinates().getX(), 99);
    Assert.assertEquals(ball.getCoordinates().getY(), 99);
}

/**
 * Test method for {@link Ball#Ball(Point2D)}.
 */
@Test
public void testBall() {
    Point2D p = new Point2D(49,30);
    ball = new Ball(p);
    Assert.assertNotNull(ball);
    Assert.assertEquals(ball.getCoordinates().getX(), 49);
    Assert.assertEquals(ball.getCoordinates().getY(), 30);

    //fail("Not yet implemented");
}

public static void main (String[] args) {
         Result result = JUnitCore.runClasses(BallTest.class);
         for (Failure failure : result.getFailures()) { 
                System.out.println(failure.toString()); 
            } 
        System.out.println(result.wasSuccessful());  
}

}
46
iaacp

[プロジェクト]> [プロパティ]> [Javaビルドパス]を右クリックし、テストフォルダーをソースフォルダーとして追加します。

テストクラスを含むすべてのソースフォルダーは、Eclipse Java Build Pathにある必要があります。メインクラスやテストクラスなどのソースをビルドディレクトリにコンパイルできるように(Eclipseのデフォルトフォルダーはbin)。

64
iaacp

他の回答のどれもあなたのために働かない場合、ここに私のために働いたものがあります。

Eclipseを再起動します

ソースフォルダーを正しく構成し、ユニットテストに正しく注釈を付けましたが、1つのプロジェクトで「JUnitテストが見つかりません」と表示されていました。再起動後、動作しました。 Eclipse Luna 4.4.1ベースのSTS 3.6.2を使用していました

15
khylo

右クリック->ビルドパス->ビルドパスから削除してから再度追加-> 'Test'という名前のフォルダーを右クリック>ビルドパス>ソースフォルダーとして使用.

9
Sagar

同じ問題があり、次のように解決しました。@ Testアノテーションを削除して、再入力しました。うまくいきました。なぜかわかりません。

6
nikartix

テストクラスのランナー定義が欠落しているようです。これが原因である可能性があります。

import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class BallTest {
...
}
5
Klazen108
  1. プロジェクト->プロパティ-> Javaビルドパスを右クリックし、[ソース]タブに移動して、テストsrcフォルダーを追加します。
  2. [プロジェクト]メニューを選択し、選択されている場合は[自動ビルド]オプションの選択を解除します
  3. [クリーン]を選択し、[自動ビルド]オプションを選択します
  4. Eclipseを再起動して、junitを実行します。
3
Ranjith Sekar

テストメソッドの名前を変更するまで、どのソリューションも機能しませんでした。テストメソッドの名前が「test」で始まる場合はOKです。私はAndroidプログラミングの初心者であり、私にとって大きな驚きでした。

2
Igor Semkiv

junit4では、テストクラス名にTestをサフィックスとして使用する必要があります。

2
jiahut

Srcフォルダー外にテストクラスを作成したと思います。上記の問題は2つの方法で解決できます。

  1. Java build path->sourceにパッケージ名を追加します

  2. package/classsrcフォルダーに移動します

私は同じ問題を抱えており、この方法で両方のソリューションがうまく機能しています。

2
pintu

ビルドパスを構成することで問題を解決しました。プロジェクト(またはサブフォルダーのいずれか)->ビルドパス->ビルドパスの構成を右クリックします。プロパティウィンドウが開いたら、[ソース]タブをクリックして、srcフォルダーとtstフォルダーを追加します。しかし、これだけではうまくいきませんでした。奇妙なことに、注釈を再入力する必要がありました(ただし、[プロジェクト]-> [クリーン]または[再起動]も機能した可能性があります)。

1
ankit

Eclipseバージョン間でプロジェクトをアップグレードしているときにこの問題に遭遇しました。たとえばMars2.0で正常に動作しているJunitはNeonでは動作しませんでした。次は私のために働いた。

  1. .settingsフォルダーを削除します。プロジェクトをEclipseにインポートします。
  2. ソースフォルダーを削除します。その後、フォルダーをソースフォルダーとして再度使用します。例-src/main/Javaをソースフォルダとしてビルドパスから削除します。 -> Ok->このフォルダーをソースフォルダーとして再度作成します。 main/resources、test/Java、test/resourcesに対して繰り返します
1
Tushar Mishra

Eclipse Photonでは、JUnit 4または5をビルドパスに追加する必要がある場合があります。 @Testを右クリックし、「JUnit 4をビルドパスに追加」を選択します。

1
Jim

この問題を解決する最良の方法は、Junitテストケースクラス名にパブリックアクセス修飾子を配置し、Junitテストケースクラスを右クリックしてシナリオを実行し、Junitテストとして実行することです。

0
Kshitij Vashist

解決策は、src/testフォルダーのバックアップを作成し、ファイルシステムからそれを削除してから、再度作成することでした。

「ビルドパスから削除」ヒントを実行した後、STS 4でプロジェクトを開くとフォルダーがねじ込まれました。

0
rsb2097

テストクラスの実行構成は、この問題の別の原因(および解決策)を作成できます。

実行(またはデバッグ)構成に移動すると(cmd-3を使用するか、ツールバーの小さなドロップダウンボタンをクリックする)、作業したすべてのテストクラスに対して作成された構成を確認できます。起動しないクラスの1つに、[テストメソッド]フィールドが何らかの方法で誤って入力された実行構成が含まれていることがわかりました。私はそれを機能させるためにそれをクリアしなければなりませんでした。オフにすると、ライトテキストで(すべてのメソッド)と表示されます。

それを奇妙に追加します-他に何かが起こっているかもしれません-他のJUnit実行構成のようなクラス名のみが含まれるように「名前」フィールドを修正するまではうまくいかないようです。

0
Joshua Goldberg

@RunWith(Parameterized.class)を使用していましたが、パブリック静的パラメーターメソッドに@Parametersアノテーションを追加できませんでした。注釈を追加した後、機能しました。

0
Saikat Sengupta

これを試して

ユニットテストクラスを右クリックし、

  1. 「実行」を選択->構成の実行
  2. [テスト]タブで、[テストランナー]フィールドで[JUnit 4]ドロップダウンを選択します。
  3. 「適用」をクリックします

さあ、テストを実行してください!

0
Prakash Ayappan