このプロジェクトを開始してから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)
OK、修正しました。
メニューの[ファイル]には、キャッシュの無効化オプションがあります。それはそれを修正しました!
私と同僚の何人かに起こった別のシナリオを追加するだけです:
Alt + enter in class-> create test:IJ(2017.1.1)は、Arquillian Junitをテストライブラリの最初のオプションとして提案し、テストクラスとメソッドは「パブリック」識別子なしで作成されます。次に、テストライブラリをJUnitに変更する場合、「パブリック」識別子が存在しないことを忘れがちであり、IJによってテストが認識されなくなります。もちろん、解決策は「パブリック」識別子を配置することです。
これはあなたに起こったことではありませんが、同じ結果をもたらします。したがって、この答えは同じ症状を経験している他の人を助けるかもしれません。
私の場合、私はしなければなりませんでした:
Resources Root
これを数回修正しました...ファイルを開く->プロジェクト構造。そこで、左側のメニューを見て、最後のエントリとして「問題」の数がある(それ以上の場合)。それらをクリックしてから、モジュール/ライブラリのintellijで赤で強調表示されている問題ごとに、それらを削除します(マイナスボタン)。 intellijは構造を特定できないため、「test1..23」のようなモジュール名が付けられます。マークされたすべての赤を削除したら、intellijを閉じて再起動します。同じ段階でエラーが再度発生するため、この段階ではMavenの更新を実行しないでください。 intellijを再起動すると、プロジェクトの新しいスキャンがトリガーされます 再び構造。
Junit Jupiter 5.5.0では、IDEA 2019.1.2(または-.3)で以前の回答は機能しませんでした。GitHubにプッシュしたプロジェクトをgit-clonedしました私の新しいラップトップでは、どのように実行しようとしても「テストが見つかりません」と表示されました。
最終的に動作したこと:IDEAで生成されたtest.imlファイルを削除したのは、テストを実行できるかどうかを確認するために作成したバージンプロジェクトにそのようなファイルがないことに気付いたためです(確かにできました)。両方の古いプロジェクトでこのファイルを削除した後、テストは完全に実行されました。新しいtest.imlは生成されませんでした。
それらのファイルがいつどのように生成されたのかわかりません。 gitリポジトリはプライベートなので、IDEAの*。* mlファイルをgitignoreすることはありませんでした。それにもかかわらず、彼らはGitHubリポジトリにいませんでした。さらに、これらは.ideaディレクトリではなく、プロジェクトのルートにありました。
私の場合、JUnit 4からJUnit 5に移行しており、それらの_@Test
_を混合しました。
要するに:
@RunWith()
を使用する場合は、_@org.junit.Test
_を使用してテストメソッドに注釈を付ける必要があります。@ExtendWith()
を使用する場合は、代わりに_@org.junit.jupiter.api.Test
_を使用する必要があります。インポートを変更すると、クラスをテストクラスとして再度実行できます。
IntelliJをテストの実行とデバッグに使用しているが、編集には使用していない場合。他のエディター/ IDEは、生成されたファイルの制御のためにIntelliJと戦っている可能性があります(*.class
)-その結果、IntelliJがテストが見つかりませんでしたと報告します(そして、おそらく偽のビルドエラーも)。
私の場合、Visual Studio Codeはこの効果を持っているようです(両方のツールを最近更新した後)。
私が見つけた解決策は、Visual Studio Codeを閉じるにして、IntelliJまたはコマンドラインからプロジェクトをクリーンに再構築することです。つまり、私のデュアルIDEワークフローは機能しなくなったため、IntelliJで編集する必要があります。
これに対する不十分な回避策は、IntelliJにGradleの代わりにテストを実行させることです。
ファイル>設定>ビルドツール> Gradle>テストの実行> IntelliJ Test Runner
これは、Gradleの別のテストフレームワークと同様の問題です。 https://youtrack.jetbrains.com/issue/IDEA-221159