为什么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) 

好的,我修好了。

在菜单中的“文件”下,有一个无效缓存选项。 修好了!

在最新的IDE(从Community Edition 2016.1开始)中,此选项更加简化。

右键单击要识别为源文件夹的文件夹:

将目录标记为 – >源根

在此处输入图像描述

只是添加一个不同的场景,这发生在我和我的一些同事身上:

Alt +在类中输入 – >创建测试:IJ(2017.1.1)提出Arquillian Junit作为测试库的第一个选项,通过使用它,测试类和方法创建时没有“公共”标识符。 然后,如果决定将测试库更改为JUnit,则很容易忘记缺少“公共”标识符,这会导致测试不被IJ识别。 当然,解决方案是放置“公共”标识符。

虽然这不是你发生的事情,但它有相同的结果,因此这个答案可以帮助其他人经历相同的症状。

在我的情况下,我不得不:

  • 关闭项目
  • 打开build.gradle文件
  • 覆盖现有项目? 是
  • 右键单击项目
    • 将目录标记为> Resources Root目录