web-dev-qa-db-ja.com

Intellij IDEAが突然テストフォルダー内のテストを突然認識しなくなるのはなぜですか?

このプロジェクトを開始してから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)
23

OK、修正しました。

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

35

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

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

Mark Directory As-> Sources Root

enter image description here

23
LeTex

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

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

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

5
João Matos

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

  • プロジェクトを閉じます
  • build.gradleファイルを開きます
  • 既存のプロジェクトを上書きしますか?はい
  • プロジェクトを右クリック
    • ディレクトリをマークする> Resources Root
1
030

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

1
user7023213

Junit Jupiter 5.5.0では、IDEA 2019.1.2(または-.3)で以前の回答は機能しませんでした。GitHubにプッシュしたプロジェクトをgit-clonedしました私の新しいラップトップでは、どのように実行しようとしても「テストが見つかりません」と表示されました。

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

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

1
Tom Rossen

私の場合、JUnit 4からJUnit 5に移行しており、それらの_@Test_を混合しました。

要するに:

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

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

0
WesternGun

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

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

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

0
nobar

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

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

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

0
Ryan The Leach