私のJavaテストはEclipseでうまく機能しました。しかし、実行メニューからテストを再起動すると、次のメッセージが表示されます。
No tests found with test runner 'JUnit 4'
.classpath
ファイルには、すべてのjar
ファイルがあり、最後に次のものがあります。
<classpathentry exported="true" kind="con" path="org.Eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>
このエラーを解決してテストを再度実行するにはどうすればよいですか?
これはちょうど私に起こった。 Eclipseの再構築または再起動は役に立ちませんでした。
テスト方法の1つを "test ..."(JUnit3スタイル)から開始するように名前を変更して解決し、allテストが見つかりました。名前を以前の名前に戻しましたが、まだ機能します。
これらのエラーが発生した場合、Eclipseは混乱しているように見えます。 Eclipseを再起動し、プロジェクトを更新し、クリーンアップし、Eclipseに再構築させて、再試行します。ほとんどの場合、それは魅力のように機能します。
「テスト」ディレクトリのコンテキストメニューで、「ビルドパス」->「ソースフォルダとして使用」を選択します。 Eclipseは、unitTests.Javaファイルをソースファイルとして表示する必要があります。 「build」ディレクトリにunitTests.classファイルがないため、「No JUnit tests found」という警告が発生します
テストクラスが「TestCase」を拡張しているかどうかを確認します。その場合、その句を削除します。クラスは、「TestCase」クラスから拡張する必要はありません。それは私が会ったほとんどの場合です。
public class MyTestCase extends TestCase{
@Test
public void checkSomething() {
//...
}
}
//Result> AssertionFailedError: No test Found in MyTestCase
次のTestCaseは問題ありません。
public class MyTestCase {
@Test
public void checkSomething() {
//...
}
}
//Works fine
私は同じ問題に直面していたので、Webとjunitの内部の悪い例にデバッグしました。基本的に、Junit 4.xの例のように、クラスでTestCaseを拡張しないでください。命名規則Testを使用するか、注釈を付けたい場合は@RunWith(JUnit4.class)を使用できます。
Assertメソッドにアクセスする必要がある場合は、Assertを拡張するか、静的インポートを使用します。
クラスがTestCaseを拡張する場合、Junit 4 Runnerを使用しても3として実行されます。これは、初期化コードに検出があるためです。
JUnit3Builderと次の行を参照してください。
boolean isPre4Test(Class<?> testClass) {
return junit.framework.TestCase.class.isAssignableFrom(testClass);
}
これはtrueを返し、junit4互換性のテストは試行されません。
追加してみてください
このようなテストのメソッドの上の@Test
@Test
public void testParse()
{
}
さらに別の可能な解決策をリングに入れます:エディターウィンドウまたはパッケージエクスプローラーからテストクラスを実行することはできませんでしたが、アウトラインビューでクラス名を右クリックし、Run As JUnitを選択しますテストはうまくいきました...
私は答えを見つけました:
Eclipseからテストをスタンドアロンで実行したときにこのエラーが発生しました(メソッドを右クリックし、junitテストとして実行することを選択しました)。
Junitテストとして完全なクラスを実行すると、パラメーターを使用してテストが正しく実行されました。
JUnit4にはテストスーツはありません。代わりに注釈を使用するか、古いJUnit3名前規則を使用してください。
例:
@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})
これは私にも起こりました。 Eclipseを再起動して、テストメソッドの前にテストを追加しました。どちらも機能しませんでした。
次の手順が機能しました。@ BeforeClassおよび@AfterClassにあるすべてのテストメソッドを静的メソッドに変更します。
つまり、次の形式のテストメソッドがある場合:
@BeforeClass
public void testBeforeClass(){
}
次に、次のように変更します。
@BeforeClass
public static void testBeforeClass(){
}
これは私のために働いた。
この問題に直面したら、ファイルを編集して保存するだけです...チャームのように動作します
私の問題は、宣言import org.junit.Test;
が消えた(または追加されなかった)ことでした。それを追加した後、別のimport
宣言を削除する必要があり(Eclipseはどちらを宣言しますか)、すべてが再び機能し始めました。
非常に遅くなりましたが、私にとって問題を解決したのは、テストメソッド名がすべて「public void Test」で始まることでした。 tを小文字にすることができました。
ゲルマンのソリューションを試しました。クラスのすべてのメソッドで機能しましたが、プロジェクトには多くのクラスがあります。
そこで、ビルドパスから削除してから追加し直しました。完璧に機能しました。
それが役に立てば幸い。
テストが入っているフォルダーがソースフォルダーかどうかを確認します。そうでない場合-右クリックして、ソースフォルダとして使用します。
JUnitテストの実行中にも同じ問題に直面しました。メインテスト関数のすぐ上にアノテーション@Testを配置することでこれを解決しました。
JUnit起動構成が個々のテストクラス用であり、その構成を何らかの形で「ソースフォルダー、パッケージ、またはプロジェクト内のすべてのテストを実行する」ように変更した可能性があります
しかし、それは「テストランナー 'JUnit 4'でテストが見つかりません」というエラーメッセージをトリガーする可能性があります。
または、@Test
注釈を削除して、テストクラスを変更しました。
こちらをご覧ください wikiページ 。
6年後...そして、まだEclipseに問題があり、JUnitが見つからない場合があります。
Eclipse Mars 2で、ファイルに9個または10個以上の@Test
アノテーションが含まれていると、gitからプルされたテストクラスを認識しないことがわかりました。余分なテストをコメントアウトし、テストクラスを実行し、コメントを外してクラスを再実行する必要があります。図を行く...
プロジェクトを閉じて開いてください。
私のケースを修正したのは@JamesGの答えに似ていました。Eclipseを再起動し、プロジェクトを再構築し、更新しました。しかし、そのいずれかを行う前に、最初にプロジェクトを閉じ(エクスプローラーのパッケージでプロジェクトを右クリック->プロジェクトを閉じる)、再度開きました。それはうまくいきました。
説明した究極のソリューションを見つける前に見つけた回避策:テストクラスをコピーし、テストクラスをJUnitとして実行します。
プロジェクトを右クリック->ビルドの依存関係->ビルドパスから除外されたものを削除-> OKをクリック
プロジェクト-> Maven->プロジェクトの更新を右クリックします。
行ってもいいはずです。
Javaクラス名がTestクラス名に似ていたときにこの問題が発生しました。キークラス「Test」でポスト修正してTestクラスの名前を更新しただけで、機能し始めました
前: Javaクラス:ACMEControllerテストクラス:ACMEController
後: Javaクラス:ACMEControllerテストクラス:ACMEControllerTest
これは私にも起こりました。 Eclipseでは、新しいJavaクラスファイルを作成しなかったため、コンパイルしていませんでした。コードがまだない場合はJavaクラスファイルにコードをコピーしてから、コンパイルしてみてください。
私は仕事でSeleniumとEclipseを使い始め、最初の自動テストを行っていましたが、コードから@ Before、@ Test、@ Afterノートを削除し、「テストランナーjunit4でテストが見つかりません」という問題が発生しました。
私の解決策は、@ Before、@ Test、@ Afterのメモを再度追加するだけで、それでスクリプトが機能しました。これをコードから削除しないことが重要です。
これは、Googleを使用して何かを検索する簡単なテストです。
import Java.util.regex.Pattern;
import Java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.Selenium.*;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.openqa.Selenium.support.ui.Select;
public class TestingClass {
private WebDriver driver;
//Creates an instance of the FirefoxDriver
**@Before**
public void SetUp() throws Exception {
driver = new FirefoxDriver();
}
**@Test**
//Search using keyword through Google Search
public void TestTestClass2 () throws Exception {
driver.get("http://www.google.com.mx/");
driver.findElement(By.name("q")).sendKeys("Selenium");
Thread.sleep(10000);
driver.findElement(By.name("btnG")).click();
Thread.sleep(10000);
}
//Kill all the WebDriver instances
**@After**
public void TearDown() throws Exception {
driver.quit();
}
}
また、Maven(m2e 1.4)でEclipseを実行しています。テストはMavenで実行されましたが、Eclipseでは実行されませんでした... Maven>Update project
を何度か適用した後でも。
私の解決策は、m2eによって生成された.classpathにいくつかの行を追加することでした。線がくっついています。
<classpathentry kind="src" output="target/test-classes" path="src/test/Java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
コマンドラインでmvn cleanを実行してから、Eclipseでproject-> cleanを実行する必要がありました。私は事前にクラスの名前を変更し、それから元の名前に変更しましたが、助けにはなりません。
別の機会があります。Junitテストを下位バージョン(例:Junit 3)からJunit 4に変更した可能性があります。以下の手順に従ってください:-
1. Right Click on class
2. Select Run as >> "Run Configurations"
3. Check your "Test Runner" option in new window
4. If it not same as maven change it for example change it as Junit 4.
私は時々この問題を抱えています。私にとって最も問題を解決するのは、実行構成からJUnitテストを実行することです... JUnit 4がテストランナーとして設定されていることを確認します。
一般的に、パッケージエクスプローラーのコンテキストメニューからRun As ... Junitテストを実行しようとすると、この問題が発生します。実行しようとしているテストのコードを右クリックし、「実行...」を選択する代わりに、「Junitテスト」で「実行構成...」を選択し、プロジェクト、テストクラス、およびテストランナーが正しく設定されていることを確認して、適用をクリックしてから実行します私のために常に動作します。
テストクラスがTestCase
から拡張されている場合、EclipseはJUnit 3スタイルのテストのみを実行するように見えることがわかりました。継承を削除すると、注釈が機能しました。
assert*
などの必要なimport static org.junit.Assert.*
メソッドをすべて静的にインポートする必要があることに注意してください。
私は最近これに問題がありましたが、これは最新のEclipseで修正されたようです。
Eclipse-Java 4.11.0,2019-03:R -> 4.12.0,2019-06:R
EclipseプロジェクトはMavenベースですか?その場合、m2Eclipseバージョンの更新が必要になる場合があります。
簡単なメモ:EclipseにはMavenベースのプロジェクトがあり、Eclipseの「新しいMavenプロジェクト」ウィザードを使用して最初に生成されます。私はユニットテストにJUnit 4.5を使用しており、mavenを使用してコマンドラインからテストを実行し、JUnitテストとして実行を使用してEclipseから個々のテストを実行できました...しかし、すべてのテストを実行しようとしたときプロジェクトでrun as JUnit test ...をプロジェクトルートノードで呼び出すことにより、Eclipseは「テストランナーjunit 4でテストが見つかりません」と苦情を言いました。 m2Eclipse更新サイトからm2Eclipseを最新の安定した開発ビルドにアップグレードすることで解決しました(具体的には、Eclipse Galileoでバージョン0.9.8.200905041414からバージョン0.9.9.200907201116にアップグレードしました)。
ここから: http://nuin.blogspot.com/2009/07/m2Eclipse-and-junit4-no-tests-found.html
私の問題は**を使用していた
testng
**パッケージorg.testng.Assert;
プロジェクトのライブラリ(Maven)でJUnitに置き換えてから、プロジェクトをリファクタリングする必要があります。
またはTestNG Eclipseプラグインを追加します
ScalaIDE(3.0.4-2.11-20140723-2253-Typesafe)を使用すると、Right Click Scala Test Class-> Run As -> Scala Junit Test
コンテキストメニューで同様の問題が発生していました。
クラスの編集(ただし、コンパイルの失敗ではない)、クリーニング、プロジェクトのクローズ、Eclipseのクローズを試みました。それらのどれも、以前はうまく機能していたクラスのコンテキストメニューを復元するために働きませんでした。テストクラスは@Test
アノテーションを使用せず、代わりにScalaTestコードを使用してクラスの上部で@RunWith(classOf[JUnitRunner])
アノテーションを使用します。
Run Configuration起動エディターからScala Junit Test
を直接選択しようとすると、質問からダイアログが表示されました。 Footix29の答えが私にとっての鍵でした。
プロジェクトを数回クリーニングしましたが、/ binディレクトリ内のクラスが実際にはしばらく再構築されていないことに気付きました。
コンテキストメニューに戻り、Scala Junit Test
sをもう一度実行できるようになりました。
manually
は、エクスプローラーで/bin/<package dir>*
を削除してクラスをクリーンアップしましたProject -> Clean
プロジェクトと完全な再構築一般にクラス編集は、Eclipseの保存された状態をクリーンアップして、再び実行できると思われます。私の場合、以前試した作業クラスはすべて失敗したため、manual
クリーンステップは必要なハンマーだけでした。ただし、Eclipseのクラスパス/ビルド状態の概念に影響する他のトリックも機能するはずです。
さらに、この動作は、Scalaクラスの名前を変更して(Scala Eclipse IDEが悪用する)リファクタリングを試みることによって部分的にトリガーされたと思います。ファイルの変更は手動です。ビルドエラーはありませんでしたが、Eclipseのビルド状態情報に何かが確実に詰まっていることを意味すると期待していたという警告もありませんでした。
この問題は、次のようにして修正できます。
<classpathentry kind="src" path="src/test/Java"/>
と同じクラスパスを設定できます。 "src/test/Java"をテストパッケージに置き換えますこの問題は、junitがソースコードを認識できないために発生しました:D