50

このプロジェクトを開始してからJUnitを使用していますが、すべて問題なく動作します。私は数百のテストを持っています、そしてもちろん、あちこちでそれらすべてを始めます。ルートテストフォルダーを右クリックし、JUnitで実行(またはデバッグ)します。しかし、昨日以来、私がそれを行うと、結果は次のようになります。

Process finished with exit code 0

テストを開始せずに。同じことがフォルダツリーのどのフォルダにも当てはまります。単一のテストクラスを実行することはできますが、すべてを開始するオプションが本当に必要です。何かアイデアがあれば、ここにドロップしてください。

テストを実行しようとすると、ログに記録される内容は次のとおりです。

2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - IntelliJ IDEA 11.1.2  Build #IU-117.418 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - JDK: 1.6.0_31 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - VM: Java HotSpot(TM) Client VM 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - Vendor: Sun Microsystems Inc. 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - OS: Windows 7 
2012-10-31 15:16:55,693 [2727217]  ERROR - ij.psi.impl.source.PsiFileImpl - Last Action: RunClass 
2012-10-31 15:16:55,693 [2727217]  ERROR - m.intellij.util.ExecutorsQuery - com.intellij.psi.tree.IFileElementType cannot be cast to com.intellij.psi.tree.IStubFileElementType 
java.lang.ClassCastException: com.intellij.psi.tree.IFileElementType cannot be cast to com.intellij.psi.tree.IStubFileElementType
    at com.intellij.psi.impl.source.PsiFileImpl.calcStubTree(PsiFileImpl.java:976)
    at com.intellij.psi.stubs.StubIndexImpl$1.perform(StubIndexImpl.java:239)
    at com.intellij.psi.stubs.StubIndexImpl$1.perform(StubIndexImpl.java:220)
    at com.intellij.util.indexing.ValueContainer.forEach(ValueContainer.java:60)
    at com.intellij.psi.stubs.StubIndexImpl.process(StubIndexImpl.java:220)
    at com.intellij.psi.stubs.StubIndexImpl.get(StubIndexImpl.java:194)
    at com.intellij.psi.stubs.AbstractStubIndex.get(AbstractStubIndex.java:33)
    at com.intellij.psi.impl.java.stubs.index.JavaAnnotationIndex.get(JavaAnnotationIndex.java:47)
    at com.intellij.psi.impl.search.AnnotatedElementsSearcher.a(AnnotatedElementsSearcher.java:93)
    at com.intellij.psi.impl.search.AnnotatedElementsSearcher.execute(AnnotatedElementsSearcher.java:44)
    at com.intellij.psi.impl.search.AnnotatedElementsSearcher.execute(AnnotatedElementsSearcher.java:28)
    at com.intellij.util.ExecutorsQuery.processResults(ExecutorsQuery.java:42)
    at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:67)
    at com.intellij.util.InstanceofQuery.forEach(InstanceofQuery.java:54)
    at com.intellij.execution.ConfigurationUtil.addAnnotatedMethodsAnSubclasses(ConfigurationUtil.java:97)
    at com.intellij.execution.ConfigurationUtil.findAllTestClasses(ConfigurationUtil.java:77)
    at com.intellij.execution.junit.TestPackage$MySearchForTestsTask.run(TestPackage.java:397)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:469)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:218)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:169)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$8.run(ProgressManagerImpl.java:378)
    at com.intellij.openapi.application.impl.ApplicationImpl$6.run(ApplicationImpl.java:434)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:145)
4

14 に答える 14

62

OK、修正しました。

メニューの[ファイル]の下に、[キャッシュを無効にする]オプションがあります。それはそれを修正しました!

于 2012-10-31T14:27:41.710 に答える
43

最新のIDE(Community Edition 2016.1以降)では、このオプションはより単純化されています。

ソースフォルダとして認識したいフォルダを右クリックします。

ディレクトリに名前を付ける->ソースルート

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

于 2016-04-23T15:27:39.960 に答える
34

何らかの理由で、Intellij Ideaは、クラスが明示的に公開されていないテストクラスとして認識しません。クラスにデフォルトのアクセス指定子がある場合、テストとしてマークされません。このルールを満たすようにクラスを変更してみてください。例:

public class TestMe {
   @Test
   public void shouldTest(){
      Assert.assertEquals("test", "test");
   }
}
于 2020-06-06T11:23:30.100 に答える
18

私と私の同僚の何人かに起こった別のシナリオを追加するだけです:

Alt + Enter in the class-> create test:IJ(2017.1.1)は、テストライブラリの最初のオプションとしてArquillian Junitを提案し、それを使用して、テストクラスとメソッドを「public」識別子なしで作成します。次に、テストライブラリをJUnitに変更することにした場合、「public」識別子がないことを忘れがちです。これにより、テストがIJによって認識されなくなります。もちろん、解決策は「パブリック」識別子を配置することです。

これはあなたに起こったことではありませんが、同じ結果をもたらすため、この答えは他の人が同じ症状を経験するのを助けるかもしれません。

于 2017-04-27T09:04:36.280 に答える
4

私の場合、JUnit4からJUnit5に移行し@Test、それらを混合しました。

要するに:

  • @RunWith()JUnit 4を使用する場合は、@org.junit.Testテストメソッドに注釈を付けるためにを使用する必要があります。
  • @ExtendWith()JUnit 5を使用する場合は、@org.junit.jupiter.api.Test代わりに使用する必要があります。

インポートを変更すると、クラスをテストクラスとして再度実行できます。

于 2019-05-10T11:49:23.923 に答える
3

これを数回修正しました...ファイルを開く->プロジェクト構造。そこで、左側のメニューを見てください。最後のエントリには「問題」の数があります(ゼロより大きい場合)。それらをクリックしてから、モジュール/ライブラリのintellijで赤で強調表示されている問題ごとに、それらを削除します(マイナスボタン)。intellijは構造を理解できないため、「test1..23」のようなモジュール名が付けられます。赤でマークされたものをすべて削除したら、intellijを閉じて再起動します。この段階では、同じエラーが再度発生するため、Mavenリフレッシュを実行しないでください。intellijを再起動すると、プロジェクトここに画像の説明を入力してください構造の新しいスキャンが再度トリガーされます。

于 2018-11-26T22:30:50.437 に答える
3

Junit Jupiter5.5.0を使用したIDEA2019.1.2(または-.3)では、これまでの回答はどれもうまくいきませんでした。別のコンピューターからGitHubにプッシュしたいくつかのプロジェクトをgit-clonedしましたが、テストは正常に実行されました。新しいラップトップでは、どのように実行しようとしても「テストが見つかりませんでした」というメッセージが表示されました。

最終的に機能したこと:IDEAで生成されたtest.imlファイルを削除しました。これは、テストを実行できるかどうかを確認するためだけに作成した未使用のプロジェクトにそのようなファイルがないことに気付いたためです(実際に実行できました)。古い両方のプロジェクトでこのファイルを削除した後、テストは完全に実行されました。新しいtest.imlは生成されませんでした。

それらのファイルがいつどのように生成されたかはわかりません。gitリポジトリはプライベートであるため、IDEAの*。*mlファイルをgitignoreする必要はありませんでした。それにもかかわらず、それらはGitHubリポジトリに含まれていませんでした。さらに、それらは.ideaディレクトリではなく、プロジェクトのルートにありました。

于 2019-07-10T23:44:28.553 に答える
3

Ubuntu 20.04、、、Java 11.0.8-zuluでこの問題が発生しましたIntellij 2020.2

Junitから5.5.2にアップグレードして5.6.2、私のためにそれを解決しました。Junit Platform1.5.21.6.2

それは私には奇妙に思えたので、バージョンを元に戻しました。これも機能するようになりました。対応するボタンが機能しなかったとしても、ある種のキャッシュの無効化がおそらく最良の説明だと思います。

つまり、基本的に、ここで言われていることはhttps://stackoverflow.com/a/58687202/6476706です(コメントしようとしましたが、コメントできません...)。

とにかく、2020年もまだ問題ですが、これは誰かを助けるかもしれません。

于 2020-08-10T10:01:39.247 に答える
1

私の場合、私はしなければなりませんでした:

  • プロジェクトを閉じる
  • build.gradleファイルを開きます
  • 既存のプロジェクトを上書きしますか?はい
  • プロジェクトを右クリック
    • ディレクトリを>としてマークしますResources Root
于 2018-05-10T11:40:22.130 に答える
1

JUnitの依存関係のバージョンを変更してみてください。前方または後方への1つのリリース。テストキャッシュを無効にするのに役立ちます。

MavenやGradleなどの依存関係管理ツールを使用する場合は、.pomまたは.gradleファイルに移動して、JUnitライブラリのバージョンを変更します。

たとえば、バージョンセクションで4.11を4.12または4.10に変更します。

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <!-- change here -->
      <version>4.11</version>
      <scope>test</scope>
   </dependency>
</dependencies>
于 2019-11-04T04:28:51.487 に答える
1

プロジェクトのすべてのモジュールで、すべてのソースルートとテストソースルートを手動で分類することになりました。チャームのように働いた。

于 2019-11-12T09:48:30.270 に答える
0

テストの実行とデバッグにIntelliJを使用しているが、編集には使用していない場合。他のエディター/IDEが生成されたファイルを制御するためにIntelliJと戦っている可能性があります( )-その結果、IntelliJはテストが見つからなかった*.classと報告します(そしておそらく偽のビルドエラーも)。

私の場合、Visual Studio Codeがこの効果を発揮しているようです(両方のツールを最近更新した後)。

私が見つけた解決策は、Visual Studio Codeを閉じてから、IntelliJまたはコマンドラインからプロジェクトをクリーンに再構築することです。つまり、デュアルIDEワークフローが機能しなくなったため、IntelliJで編集する必要があります。

于 2018-10-14T22:51:21.917 に答える
0

これに対する不十分な回避策は、IntelliJにGradleの代わりにテストを実行させることです。

ファイル>設定>ビルドツール>Gradle>テストの実行>IntelliJTest Runner

これは、Gradleの別のテストフレームワークと同様の問題です。https://youtrack.jetbrains.com/issue/IDEA-221159

于 2019-09-04T03:37:51.633 に答える
0

私にとっては、テストされているクラスはそうではなかったということでしたpublic。緑に設定するとpublic、テストアイコンがポップアップ表示されます。これはJUnit4でのみ問題になることに注意してください。

于 2022-01-16T14:23:23.223 に答える