Ответ 1
ОК, я исправил его.
В меню в разделе "Файл" существует опция "Недействительный кеш". Это исправило это!
Я использую 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) эта опция упрощена.
щелкните правой кнопкой мыши папку, которую вы хотите распознать в качестве исходной папки:
Mark Directory As → Sources Root
Просто добавьте другой сценарий, который произошел со мной и некоторыми из моих сотрудников:
Alt + введите в класс → создать тест: IJ (2017.1.1) предлагает Arquillian Junit в качестве первого варианта тестирования библиотеки, и, пройдя с ним, тестовый класс и методы создаются без "общедоступного" идентификатора. Затем, если вы решите изменить библиотеку тестирования на JUnit, легко забыть об отсутствии "общедоступного" идентификатора, что заставляет тесты не распознаваться IJ. Разумеется, решение состоит в том, чтобы разместить "общедоступные" идентификаторы.
Хотя это не то, что произошло с вами, оно имеет одинаковые последствия, поэтому этот ответ может помочь другим испытать те же симптомы.
В моем случае мне пришлось:
Resources Root
Исправлено несколько раз... открыть файл → структура проекта. Там посмотрите на левое боковое меню, так как в последней записи есть счетчик "проблем" (если больше нуля). нажмите на них и затем для каждой проблемы, выделенной красным цветом в модулях/библиотеках, удалите их (кнопка минус). Им будут даны имена модулей, такие как "test1..23", так как intellij не может разобрать структуру. После удаления всех отмеченных красным, закройте + перезапустите intellij. Не запускайте maven refresh на этом этапе, поскольку он снова выдаст ту же ошибку. При перезапуске intellij снова запустит новое сканирование структуры проекта .
Ни один из предыдущих ответов не работал для меня в IDEA 2019.1.2 (или -.3) с Junit Jupiter 5.5.0. Я git-клонировал несколько проектов, которые я перенес на GitHub с другого компьютера, где их тесты работали нормально. На моем новом ноутбуке я получил "Тесты не найдены", независимо от того, как я пытался их запустить.
Что в итоге сработало: я удалил сгенерированный IDEA файл test.iml, потому что я заметил, что такого файла в нетронутом проекте, который я создал, просто не было, чтобы посмотреть, смогу ли я вообще выполнить тесты (я действительно мог). После того, как я удалил этот файл в обоих старых проектах, тесты прошли отлично. Новый test.iml не был создан.
Я не знаю, как и когда эти файлы были сгенерированы. Поскольку git-репозитории являются частными, я не стал gitignore IDEA *. * Ml файлов; тем не менее, они не были в репозиториях GitHub. Более того, они были в корне проектов, а не в каталоге .idea.
Если вы используете IntelliJ для выполнения теста и отладки, но не для редактирования. Ваш другой редактор /IDE может бороться с IntelliJ за контроль над сгенерированными файлами (*.class
) - в результате IntelliJ сообщает, что тесты не найдены (и, возможно, также могут быть ложные ошибки сборки).
В моем случае код Visual Studio, кажется, оказывает этот эффект (после недавних обновлений обоих инструментов).
Решение, которое я нашел, состоит в том, чтобы закрыть код Visual Studio и затем очистить пересобрать проект с помощью IntelliJ или из командной строки. Другими словами, мой рабочий процесс с двумя IDE больше не работает - поэтому я должен редактировать в IntelliJ.
В моем случае мы переходим с JUnit 4 на JUnit 5, и я смешал @Test
из них.
Короче:
@RunWith()
из JUnit 4, вы должны использовать @org.junit.Test
для аннотирования методов тестирования.@ExtendWith()
из JUnit 5, вы должны использовать вместо этого @org.junit.jupiter.api.Test
.Когда я изменяю импорт, мой класс снова может быть запущен как тестовый.
Плохой обходной путь для этого - позволить IntelliJ запускать тесты вместо Gradle.
Файл> Настройки> Инструменты сборки> Gradle> Выполнить тесты с помощью> IntelliJ Test Runner
Это аналогичная проблема с другим тестовым фреймворком на Gradle. https://youtrack.jetbrains.com/issue/IDEA-221159