クラスが見つかりません:IntelliJの空のテストスイート


183

私は大学でコンピューターサイエンスプログラムを始めたばかりですが、IntelliJで問題が発生しています。単体テストを実行しようとすると、メッセージが表示されます

Process finished with exit code 1
Class not found: "edu.macalester.comp124.hw0.AreaTest"Empty test suite.

画面の左側に「テストが見つかりませんでした」というメッセージも表示されます。私のテストコードはここにあります:

package edu.macalester.comp124.hw0;


import org.junit.Test;
import static org.junit.Assert.*;

public class AreaTest {

    @Test
    public void testSquare() {
    assertEquals(Area.getSquareArea(3.0), 9.0, 0.001);
    }

    @Test
    public void testCircle() {
    assertEquals(Area.getCircleArea(3.0), 28.2743, 0.001);
    }
}

そして私のプロジェクトコードはここにあります:

package edu.macalester.comp124.hw0;

import java.lang.Math;
public class Area {

/**
 * Calculates the area of a square.
 * @param sideLength The length of the side of a square
 * @return The area
 */
public static double getSquareArea(double sideLength) {
    // Has been replaced by correct formula
    return sideLength * sideLength;
}

/**
 * Calculates the area of a circle.
 * @param radius The radius of the circle
 * @return The area
 */
public static double getCircleArea(double radius) {
    // Replaced by correct value
    return radius * 2 * Math.PI;
}

}

テストを機能させるにはどうすればよいですか?IntelliJ IDEA CEの最新バージョンを使用しています。


8
多くのことがうまくいかないことがあります。私にとってmvn clean packageは、ターミナルに入力するのと同じくらい簡単でした。IntelliJが最初にプロジェクトを誤ってインポートした理由がわかりません。
MarkHu 2017年

1
私にとっては、「テストリソースルート」としてフォルダを作成するだけです...
Xin Meng


Build-> Clean and Build-> Rebuildで十分でした。
gustavoknz

回答:


109

同じメッセージを持っていた。実行/デバッグ構成を削除する必要がありました。

私の場合、以前は単体テストをローカルテストとして実行していました。その後、テストをandroidTestパッケージに移動して、もう一度実行しようとしました。Android Studioは前回の実行構成を記憶していたため、同じエラーを生成するローカルユニットテストとしてもう一度実行しようとしました。

構成を削除してテストを再度実行した後、新しい構成を生成して機能しました。

ここに画像の説明を入力してください


ほとんどの場合、あなたの解決策は最も普遍的で、最も不思議なものではないと思います。魅力のように私のプロジェクトで働いた。
ba3a 2017

試してみましたが、それだけではうまくいきませんでした。また、キャッシュを無効にする必要がありました。File > Cashes / Restart
Lukasz 2017

私はそれを試し、また現金を無効にしました。しかし、それでも機能しません。

ダイアログボックスを閉じるだけではなく、
わかりやすい

Android Studioに「特定のインストルメンテーションランナー」エントリが表示されません。
デヴィッド・


49

同じ問題がありました。私はプロジェクトを再構築し、それは私を助けました。

[ ビルド] -> [ プロジェクトの再構築]に移動します

その後、Mavenツールを使用している場合は、[ すべてのMavenプロジェクトを再インポート ]オプションを使用することをお勧めします


問題が解決しない場合は、別の解決策を試してください。

  • [ファイル] -> [ キャッシュの無効化/再起動] -> [ 無効にして再起動]に移動します。

または:

  • Mavenプロジェクト構造src / main / javajavaディレクトリを右クリックし、オプションとしてMark directory as- > Sources Rootを選択します。

    同様にテストディレクトリでも同じように実行します。src/ test / java javaディレクトリを右クリックしてオプションMark directory を選択しますas- > テストソースルート

または:

  • 実行 -> 構成の編集に移動し、セクションJUnitでテスト構成を削除します。変更を適用します。その後、テストを実行してみてください。新しい構成が自動的に作成されます。

または:

  • [ファイル]-> [プロジェクト構造]に移動し、[ モジュール]を選択してから、適切なモジュールを選択し、[ パス ]タブに移動します。
    チェックオプション:
    ラジオボタン[ モジュールのコンパイル出力パスを使用する ] 選択する必要があります。

    出力パスはプロジェクト内にある必要があります。また、テスト出力パスはプロジェクト内のディレクトリでなければなりません。たとえば、次のように表示できます。
    出力パス: C:\ path \ to \ your \ module \ yourModule \ target \ classes
    テスト出力パス: C:\ path \ to \ your \ module \ yourModule \ target \ test-classes

    出力を除外パスの選択を解除する必要があります。

10
プロジェクトの再構築(Build -> Rebuild Project)が私にとってうまくいきました。ありがとうございました!
Francisco C.

この解決策は私にとってうまくいきました。モジュールについて最後に、出力パスを使用しました。ありがとう。
Mohammad Ganji 2018年

より必死の解決策として、.ideaファイルを削除し、プロジェクトを再度開きます。ただし、一部の構成/設定は失われます。
アーロン

<project-root>/src/test/javaテストルートとして設定しBuild -> Rebuild Project、私のために働いた。また、テストを含むクラスがパッケージ名がで始まるパッケージ内にある場合、java.*セキュリティ例外が発生しました。
マスターチーフ

問題は、依存関係が古くなっていたことです
dellasavia

17

これは、テストフォルダーが別のモジュールとしてインポートされている場合にも発生する可能性があります(プロジェクトビューのフォルダーアイコンに小さな四角が表示されます)。
プロジェクトビューでテストフォルダを選択してモジュールを削除し、を押しDELます。
次に、テストを開始します。
エラーメッセージを含むポップアップダイアログが表示され、モジュールが選択されていない場合は、ドロップダウンからルートモジュールを指定します。


3
これも私の問題でした(テストフォルダー上の四角形-それが何を意味するのか知らなかったでしょう!)。修正するために、実行構成を開いたところ、「モジュールのクラスパスを使用する:」がテストモジュールに設定されていることがわかりました。代わりにプロジェクトのクラスパスに変更しましたが、うまくいきました。「個別のモジュール」の問題点を指摘していただきありがとうございます。
Redboots 2017年

これはまさに私に起こったことです。start.spring.ioを使用してSpringプロジェクトを作成し、開きました。その後、SpringBootTestを開始すると、「クラスが見つかりません: "..."空のテストスイート」エラーが発生しました。ソリューションに従って、テストフォルダーの[削除]ボタンを押し、実行構成を再作成した後、すべてが問題なく完了しました。追加のヒント:テストフォルダーの削除ボタンを押すと、「ファイルは削除されません」などのダイアログが表示されます。だからボタンを押す恐れはありません。
kleenxcoder

14

新しいIntelliJプロジェクトを開始した後、同様の問題が発生しました。モジュールの「モジュールコンパイル出力パス」が正しく指定されていないことがわかりました。モジュールの「コンパイル出力パス」のパスを適切な場所に割り当てたところ、問題は解決しました。コンパイル出力パスは、プロジェクト設定で割り当てられます。「モジュール」で、関連するモジュールを選択し、「パス」タブを選択します...

プロジェクト設定の[パス]タブ| モジュールダイアログ

スクリーンショット

...コンパイラの出力を、親プロジェクトフォルダーにある「output」という名前のフォルダーに送信しました。


14

私の場合、私が正しい場所に他のすべてを持っていたが、私はに取り組んでいたJavaライブラリkotlin。プラグインを適用するのを忘れました:

apply plugin: 'kotlin-android'

そして今、期待通りに動作しています。


1
わたしも。モジュールを作成するときにKotlinのオプションがないことは不愉快です。
Rupert Rawnsley

11

だから、ここでの私の問題はフォルダー名でした。私はコードフォルダーをClasses 2016/2017と呼んでいましたが、IntelliJはそれを好みませんでした。スラッシュ(またはパス内の他の問題のある文字)を削除し、プロジェクトを再インポートすれば、準備完了です。


これは私を助けました。他の人のために、私はDropboxにフォルダを持っていました。Dropboxから移動して再インポートすると、問題は解消しました。
Mick Sear

この答えはノーベル平和賞に値します!
Ali Abbas Jaffri 2017年

7

Android Studio 3.0以降では、UIテストが何らかの形でユニットテストとして解釈され、ターゲットデプロイメントの選択を求められない場合があります。構成の編集に移動して統合テストとしてマークすると、機能し始めます


また、Android Studio 3.0.1では、テストの横にある実行ボタンが機能しません。3.1 Canary 8にアップデートした後、再び動作し始めました。
Marc


6

プロジェクトにコンパイルの問題がある場合、テストが実行されない可能性があります。したがって、最初にプロジェクトをビルド->プロジェクトのビルドとしてビルドします。コンパイルが成功したら、テストを再実行します。

何もうまくいかない場合は、プロジェクトウィンドウを閉じてプロジェクトを削除し、Gradle / Mavenプロジェクトとして再インポートします。これにより、既存のIntelliJで作成されたファイルを上書きすることですべてが設定されます。これにより、作成された無効なキャッシュが削除されます。

キャッシュを無効にすることもできます。

File -> Invalidate Caches/Restart


5

jarMavenから一部をインポートするときに同じ質問があり、その後、empty-test-suiteエラーがました。

私の場合、それはMavenがモジュールファイルをリセットしたためです。デフォルトの設定をクリアして解決しました:

  1. オープンプロジェクト構造を持つshift- ctrl- alt- sショートカット

PModulesソースのスクリーンショット

  1. モジュール>ソースを見て、ソースパッケージまたはテストパッケージを入力します。

5

プロジェクトまたはモジュールを再インポートすると、問題を解決できます。開発時にパッケージ名を変更してこの問題を作りました。ただし、出力パステスト出力パスは古いパスです。そのため、intellijは古いパスからクラスを見つけることができません。したがって、最も簡単な方法は、出力パスとテスト出力パスを修正することです。

Intellijモジュール設定


何らかの理由で、プロジェクトパスの継承がMacOで機能しないのですが、なぜそれが起こり得るのか、何か考えはありますか?
Johnny_D

@Johnny_Dあなたの問題はパッケージの名前を変更したことによるものですか?
2018年

5

私は同じ問題(Android Studio 3.2 Canary 4)を抱えており、他の回答に記載されている提案のほとんどを試しましたが、成功しませんでした。これは、ファイルtestandroidTestフォルダからフォルダに移動した後に発生したことに注意してください。それは、インストルメント化されたテストではなく、テストとして実行構成で引き続き表示されました。

私は最終的に新しいファイルを作成することになります:

  1. 別の名前で新しいインストルメント済みテストクラスを作成します。
  2. クラスからすべてのコードをコピーします。
  3. それを実行します。
  4. 古いクラスを削除します。
  5. 新しいクラスの名前を目的の名前に変更します。

悪い考えではない=)ありがとう!
Andrew Grow

5

興味深いことに、私はさまざまな理由でこの問題に何度も直面しています。例:キャッシュの無効化と再起動も役立ちました。

最後に、ファイル->プロジェクト構造->プロジェクト->プロジェクトコンパイラの出力で出力パスを修正して修正しました: absolute_path_of_package / out

例:/ Users / random-guy / myWorkspace / src / DummyProject / out


これが私のテストスイートを実行したのです。ありがとう!
フランク

3

これは、module-jdkまたはproject-jdkが正しく構成されていない場合にも発生します。


「適切な構成」を明確にしてください。これは、この問題のあるユーザーには役立たないと思います。ありがとう!
eggmatters

3

.ideaSBTプロジェクトを削除して再インポートすると、この問題は解決しました。


.ideaフォルダーを削除し、Mavenプロジェクトを再インポートした後で機能します(y)
Amine Soumiaa

これは私にとっても同じでした。上記の提案を行いましたが、うまくいきませんでした。.ideaベースフォルダーとサブモジュールの.imlファイルも削除しました。
デニス

3

私の場合、奇妙な理由でIntelliJはテストソースをコンパイルしませんでした。私は単にビルド構成を変更clean test-compileし、Before launchセクションにmavenゴールを追加しました


上記すべてを試しましたが、これだけが役に立ちました:)ありがとうございます!
アンテンカ2018年

2

私の場合、テスト名に問題がありました:)。

名前が:の場合 dummyNameTest、見つかった場所ではテストを取得しませんが、testDummyNameすべてが問題ない場合


1

同じ問題がありました。私の場合、メインフォルダーの外のパッケージ/フォルダーにいくつかのテストクラスがありました。しかし、実行構成をチェックしたとき、それは常にメインフォルダー内のクラスを検索しようとしていました(メインの外にある私のパッケージではありません)。その場合は、実行構成が指す場所にパッケージを移動する必要があります。または、パッケージを指すように実行構成を変更します。


1

テストにはAndroidデバイス(エミュレーターまたはハードウェア)が必要ですか?
もしそうなら、それは「計装されたテスト」と呼ばれ、「module-name / src / androidTest / java /」に常駐します。
そうでない場合は、「ローカルユニットテスト」と呼ばれ、「module-name / src / test / java」にあります。

https://developer.android.com/training/testing/start/index.html

ローカルユニットテストを作成したため、同じエラーが発生しましたが、インストルメント化されたテストのフォルダーに配置されました。ローカルユニットテストを「src / test / java」フォルダに移動すると、修正されました。


1

同じエラーが発生していました。デバイスがAndroid Studioに接続されていません。スタジオに接続したとき。できます。これは私の問題を解決します。


1

これは、フォルダがテストソースとして設定されていないためと考えられます。これは、[モジュールの設定]> [モジュール]で実行できます。


1

私にとって、プロジェクトはプロジェクトの外でコンパイルされました。パスを変更するだけです。パスを変更するため(私はMacを使用しています)。

  • ファイルに移動->プロジェクト構造
  • 左側のモジュールに移動します。
  • パスの選択、ラジオボタンの選択(モジュールコンパイル出力パスを使用)
  • プロジェクト内にある出力パスとテスト出力パスを提供します
  • [出力パスを除外]の選択を解除します。
  • ファイルに移動->キャッシュの無効化をクリックして再起動

1

私の場合、問題は私の中に行ってbuild.gradle変更することで修正されました

dependencies {
    testImplementation 'junit:junit:4.12'
}

dependencies {
    testCompile 'junit:junit:4.12'
}

これは驚くべきことに私にも役立ちました。再コンパイルを強制したようです。助けなしで以前にいくつかのクリーンアップ/キャッシュを試しました
Dieter Menne

それが価値があるものについては、私のための問題は上記で提案した解決策のように修正されました。ただし、その理由は、「実装」コマンドをサポートしないプラグインを使用していたためです。したがって、プロジェクトのプラグインの一部にも更新があるかどうかを確認することをお勧めします。Gradleは「コンパイル」コマンドを廃止したいと考えているため、おそらくより良いアプローチはプラグインを更新することでしょう
bremen_matt

1

私はすべての解決策を試しましたが、どれも役に立ちませんでした。最後にデバッグモードでテストを実行すると、動作し始めました。たぶん、Mavenのキャッシュがクリアされた可能性があります。言うのは難しい。できます。試すmvn test -X


1

Projectsウィンドウでファイルを右クリックし、

YourTestを実行する」。

おそらく、実行コンフィギュレーションの障害が新たに再構築されているため、すべてが正常に始まります。


1

これは、新しいバージョンのIntelliJをインストールした後(少なくとも1回は;)発生する可能性があり、IntelliJプラグインはまだ更新されていません。

Check for updates…IntelliJヘルプメニューから手動で行う必要がある場合があります。


1

Mavenプロジェクト構造src / main / javaで、javaディレクトリを右クリックし、[Mark directory as-> Sources Root]オプションを選択します。

同様にテストディレクトリでも同じことを行う:src / test / java javaディレクトリを右クリックし、[Mark directory as as]-> [Test Sources Root]オプションを選択します。

私のために働いた:-)


1

Intellijで以下の手順に従います(理解を深めるためのスクリーンショット付き)。

  1. [ファイル]-> [プロジェクト構造]に移動します

ここに画像の説明を入力してください

  1. モジュールに移動して、Junitテストファイルが存在するモジュールを選択し、[Use module compile output path]ラジオボタンを選択します。

  2. 添付されているスクリーンショットのように、それぞれのクラスフォルダーパスに言及します。

ここに画像の説明を入力してください

  1. 適用してください。これは私のために働いた!

0

IDEA 15.0.6を使用して同じ問題が発生しましたが、テストクラスが含まれていたパッケージの名前を変更した場合を除いて何も解決しませんでした。その後、名前を元の名前に戻し、それが機能したため、名前変更アクションによってキャッシュがクリアされた可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.