Класс не найден: пустой тестовый набор в IntelliJ


183

Я только начинаю программу информатики в своем колледже, и у меня есть некоторые проблемы с IntelliJ. Когда я пытаюсь запустить модульные тесты, я получаю сообщение

Process finished with exit code 1
Class not found: "edu.macalester.comp124.hw0.AreaTest"Empty test suite.

Я также вижу сообщение под названием «Тесты не найдены» в левой части экрана. Мой тестовый код здесь:

package edu.macalester.comp124.hw0;


import org.junit.Test;
import static org.junit.Assert.*;

public class AreaTest {

    @Test
    public void testSquare() {
    assertEquals(Area.getSquareArea(3.0), 9.0, 0.001);
    }

    @Test
    public void testCircle() {
    assertEquals(Area.getCircleArea(3.0), 28.2743, 0.001);
    }
}

И мой код проекта здесь:

package edu.macalester.comp124.hw0;

import java.lang.Math;
public class Area {

/**
 * Calculates the area of a square.
 * @param sideLength The length of the side of a square
 * @return The area
 */
public static double getSquareArea(double sideLength) {
    // Has been replaced by correct formula
    return sideLength * sideLength;
}

/**
 * Calculates the area of a circle.
 * @param radius The radius of the circle
 * @return The area
 */
public static double getCircleArea(double radius) {
    // Replaced by correct value
    return radius * 2 * Math.PI;
}

}

Как я могу заставить мои тесты работать? Я использую самую последнюю версию IntelliJ IDEA CE.


8
Так много вещей может пойти не так. Для меня это было так же просто, как печатать mvn clean packageв терминале. Не уверены, почему IntelliJ импортировал проект неправильно в начале.
MarkHu

1
Для меня просто сделайте папку «тестовым корнем ресурса» ...
Синь Мэн,


Build -> Clean and Build -> Rebuild было достаточно для меня.
gustavoknz

Ответы:


109

Было то же сообщение. Мне пришлось удалить конфигурацию Run / Debug.

В моем случае я запускал юнит-тест как локальный тест раньше. После этого я переместил свой тест в пакет androidTest и попытался запустить его снова. Android Studio запомнила последнюю конфигурацию запуска, поэтому она пыталась запустить ее снова в качестве локального модульного теста, который выдал ту же ошибку.

После удаления конфига и повторного запуска теста он сгенерировал новую конфигурацию и заработал.

введите описание изображения здесь


Я думаю, что в большинстве случаев ваше решение будет наиболее универсальным и наименее волшебным. Работал в моем проекте как шарм.
ba3a

Я попробовал это, но это не сработало само по себе. Я также должен был аннулировать наличные деньги. File > Cashes / Restart
Лукаш

Я попробовал это, а также аннулировал наличные деньги. Но все равно не работает.
крылья

Это сработало для меня после того, как я вспомнил, что нужно нажать очевидную кнопку «ОК» вместо того, чтобы просто закрыть диалоговое окно :-)
Римский

Я не вижу записи "Конкретный инструментальный бегун" в моей Android Studio.
Дэвид

59

я пошел в

File -> Invalidate Caches/Restart...

и тогда это сработало для меня.


6
Я сделал это, а затем также пришлось удалить тестовые конфигурации.
Йохан Хенкенс

Это не помогло в моем случае.
user3791111

File> Invalidate Caches / Restart> Просто перезагрузка сработала для меня
Hashmatullah Noorzai

49

Я была такая же проблема. Я перестроил проект, и он мне помог.

Перейти в Build -> Rebuild Project

После этого, если вы используете инструмент Maven, я рекомендую использовать опцию Reimport All Maven Projects


Если это не поможет, попробуйте другие возможные решения:

  • Перейдите в Файл -> Недействительные кеши / Перезапуск -> Неверный и перезапустите

или:

  • В структуре вашего проекта Maven src / main / java щелкните правой кнопкой мыши на каталоге java и выберите опцию Пометить каталог как -> Корни источников.

    Аналогичным образом сделайте то же самое с тестовым каталогом, так: src / test / java щелкните правой кнопкой мыши на каталоге java и выберите опцию Пометить каталог как -> Тестовые источники Root

или:

  • Перейдите в Run -> Edit Configurations и в разделе JUnit удалите тестовые конфигурации. Применять изменения. После этого попробуйте запустить ваши тесты. Новая конфигурация должна быть создана автоматически.

или:

  • Перейдите в Файл -> Структура проекта , выберите Модули , затем выберите нужный модуль и перейдите на вкладку Пути .
    Проверьте опции:
    переключатель Кнопка Использовать выходной путь компиляции модуля должен быть выбран.

    Выходной путь должен быть внутри вашего проекта. Также Test output path должен быть каталогом внутри вашего проекта. Например, он может выглядеть аналогично:
    Выходной путь: C: \ path \ to \ your \ module \ yourModule \ target \ classes
    Test Выходной путь теста: C: \ path \ to \ your \ module \ yourModule \ target \ test-classes

    Исключить выходные данные пути должны быть отменены.

10
Восстановление проекта ( Build -> Rebuild Project) было то, что работало для меня. Спасибо!
Франциско С.

Это решение сработало для меня, последнее, что касается модулей и использования пути вывода. Спасибо.
Мохаммад Ганджи

В качестве более отчаянного решения удалите файл .idea и снова откройте проект. Однако вы потеряете некоторые настройки / настройки.
Аарон

Установка в <project-root>/src/test/javaкачестве тестового рута, и у Build -> Rebuild Projectменя сработало. Также, когда классы, содержащие тесты, были в пакете с именем пакета, начинающимся с java.*, я получил исключение безопасности.
Мастер Шеф

Проблема в том, что зависимости устарели
dellasavia

17

Это также может произойти, если ваша тестовая папка была импортирована как отдельный модуль (на значке папки в представлении проекта отображается небольшой квадрат).
Удалите модуль, выбрав тестовую папку в представлении проекта и нажмите DEL.
Тогда начни свой тест.
Если появляется всплывающее диалоговое окно с сообщением об ошибке, что модуль не выбран, укажите корневой модуль из раскрывающегося списка.


3
Это было моей проблемой также (квадрат на тестовой папке - не знал бы, что это означало!); чтобы исправить это, я открыл конфигурацию запуска и обнаружил, что «Использовать путь к классу модуля:» был установлен для тестового модуля. Вместо этого я изменил его на путь классов моего проекта, и он работал нормально. Спасибо, что указали на «отдельный модуль»!
Redboots

Это именно то, что случилось со мной. Я создал проект Spring с помощью start.spring.io и открыл его. После этого я запустил SpringBootTest и столкнулся с ошибкой «Class not found:» ... «Empty test suite». После выполнения вашего решения и нажатия кнопки УДАЛИТЬ в тестовой папке и воссоздания конфигурации запуска все было в порядке. Дополнительная подсказка: при нажатии кнопки «Удалить» в тестовой папке появляется диалоговое окно, в котором говорится, что «файлы не будут удалены». Так что не бойтесь нажимать на кнопку.
kleenxcoder

14

У меня была похожая проблема после запуска нового проекта IntelliJ. Я обнаружил, что «выходной путь компиляции модуля» для моего модуля не был указан правильно. Когда я назначил путь в модуле «путь вывода компиляции» в правильное местоположение, проблема была решена. Выходной путь компиляции назначается в настройках проекта. В разделе Модули выберите соответствующий модуль и перейдите на вкладку Пути ...

Вкладка Пути в настройках проекта | Диалог модулей

Скриншот

... Я отправил вывод компилятора в папку с именем «output», которая присутствует в родительской папке Project.


14

В моем случае все остальное было в нужном месте, но я работал над java-библиотекой с kotlin . Я просто забыл применить плагин:

apply plugin: 'kotlin-android'

И теперь он работает, как и ожидалось.


1
Мне то же. Досадно, что при создании модулей нет опции Kotlin.
Руперт Роунсли

11

Итак, моя проблема здесь была с именами папок. Я назвал свою папку с кодами Classes 2016/2017, что IntelliJ не понравилось. Просто удалите косую черту (или другой оскорбительный символ в пути), повторно импортируйте проект, и все будет хорошо!


Это помогло мне. Для других у меня была папка в Dropbox. Когда я переместил его из Dropbox и повторно импортировал, проблема ушла.
Мик Сир

Этот ответ заслуживает Нобелевской премии мира!
Али Аббас Джаффри

7

В Android Studio 3.0+ тесты пользовательского интерфейса иногда интерпретируются как модульные тесты и не требуют выбора целевого развертывания. Вы можете перейти к редактированию конфигурации и пометить его как интеграционный тест, и он начнет работать


Кроме того, в Android Studio 3.0.1 кнопка запуска рядом с тестом не работает. После обновления до 3.1 canary 8 он снова начал работать.
Марк

6

У меня была та же проблема, и восстановление / аннулирование кэша и т. Д. Не работало. Похоже, это просто ошибка в Android Studio ...

Временное решение - просто запустить свои модульные тесты из командной строки:

./gradlew test

Смотрите: https://developer.android.com/studio/test/command-line.html


6

Если у проекта есть проблема с компиляцией, то тесты могут не запускаться. Итак, сначала соберите проект как Build -> Build Project. После успешной компиляции повторите тест.

Если ничего не получится, просто закройте окно проекта, удалите проект и повторно импортируйте как проект Gradle / Maven, который установит все для вас, переопределив существующие файлы, созданные IntelliJ. Это приведет к удалению неверного созданного кэша.

Вы также можете просто сделать недействительным кеш.

File -> Invalidate Caches/Restart


5

У меня был тот же вопрос, когда я импортирую некоторые jarиз Maven, и впоследствии, вызывает empty-test-suiteошибку.

В моем случае это было из-за того, что maven сбрасывал файлы модуля. Что я решил, очистив мою конфигурацию по умолчанию:

  1. Открытая структура проекта с shift- ctrl- alt- sярлыком

Скриншот источников PModules

  1. Посмотрите на Модули> Источники и заполните пакет Sources или тестовый пакет.

5

Реимпорт проекта или модуля может решить проблему. Я сделал эту проблему, переименовывая имя пакета при разработке. Но выходной путь и выходной тестовый путь - это старый путь. Так что Intellij не может найти класс по старому пути. Таким образом, самый простой способ - исправить выходной путь и проверить выходной путь.

Настройка модуля Intellij


По какой-то причине у меня не работает путь к проекту «унаследовать» в MacO. У вас есть идеи, почему это может произойти?
Johnny_D

@Johnny_D Вы уверены, что ваша проблема связана с переименованием пакета?
Bejond

5

У меня была та же проблема (Android Studio 3.2 Canary 4), и я попробовал большинство предложений, описанных в других ответах - безуспешно. Обратите внимание , это произошло после того, как я переехал из файла testв androidTestпапке. Он все еще показывался в конфигурациях прогона как тест, а не как инструментальный тест.

Я, наконец, в конечном итоге с созданием нового файла:

  1. Создать новый инструментированный тестовый класс с другим именем.
  2. Скопируйте весь код из вашего класса.
  3. Запустить его.
  4. Удалить старый класс.
  5. Переименуйте новый класс в нужное имя.

Неплохая идея =) Спасибо!
Эндрю Гроу

5

Интересно, что я сталкивался с этой проблемой много раз по разным причинам. Например, Invalidating кеш и перезапуск также помогли.

Последнее, что я исправил, исправив выходной путь в Файл -> Структура проекта -> Проект -> Вывод компилятора проекта в: absolute_path_of_package / out

например: / пользователи / random-guy / myWorkspace / src / DummyProject / out


Это тот, который заставил мой набор тестов работать! Спасибо!
Франк

3

Это также произойдет, если ваш module- и / или project-jdk не настроен должным образом.


Уточните, пожалуйста, «правильная конфигурация». Я не думаю, что это полезно для пользователей с этой проблемой. Спасибо!
eggmatters

3

Удаление .ideaи повторный импорт проекта SBT решили эту проблему для меня.


Он работает после удаления папки .idea и повторного импорта проекта maven (y)
Amine Soumiaa

Это было то же самое для меня. Я прошел через предложения выше, но ни один не работал. Я удалил базовую папку .idea, а также файлы .iml в подмодулях.
Деннис

3

В моем случае IntelliJ не скомпилировал тестовые источники по странной причине. Я просто изменил конфигурацию сборки и добавил цель maven clean test-compileв Before launchраздел


Перепробовал все вышеперечисленное, но только это помогло :) Спасибо!
Антенка

2

В моем случае возникла проблема с именем теста :).

Если имя было: dummyNameTestтогда не получайте тесты там, где нашли, но если testDummyNameвсе было в порядке


1

Я была такая же проблема. В моем случае у меня было несколько тестовых классов в пакете / папке за пределами основной папки. Но когда я проверял конфигурацию Run, он всегда пытался найти классы внутри главной папки (а не мои пакеты вне main). Так что, если это так, вы должны либо переместить ваши пакеты туда, куда указывает конфигурация запуска. Или измените конфигурацию запуска так, чтобы она указывала на ваши пакеты.


1

Для вашего теста требуется устройство Android (эмулятор или аппаратное обеспечение)?
Если это так, он называется «инструментальным тестом» и находится в «module-name / src / androidTest / java /».
Если нет, он называется «локальный модульный тест» и находится в «module-name / src / test / java»

https://developer.android.com/training/testing/start/index.html

Я получил ту же ошибку, потому что я написал локальный модульный тест, но он был помещен в папку для инструментальных тестов. Перемещение локального тестового модуля в папку «src / test / java» исправило это для меня.


1

Получал ту же ошибку. Мое устройство не было подключено к Android Studio. Когда я подключился к студии. Оно работает. Это решает мою проблему.


1

Вероятно, это связано с тем, что папка не установлена ​​в качестве источника тестирования, что можно сделать через «Настройки модуля»> «Модули».


1

Для меня проект был составлен вне проекта. Я просто меняю путь. Для изменения пути (я использую Mac).

  • Перейти к файлу -> Структура проекта
  • Перейти к модулю на левой стороне.
  • Выберите Paths, выберите переключатель (используйте выходной путь компиляции модуля)
  • Укажите выходной путь и тестовый выходной путь, который находится внутри вашего проекта
  • Снимите флажок «Исключить пути вывода».
  • Перейдите в Файл -> Нажмите Invalidate Cache и перезапустите

1

В моем случае проблема была решена, зайдя в мой build.gradleи изменив

dependencies {
    testImplementation 'junit:junit:4.12'
}

в

dependencies {
    testCompile 'junit:junit:4.12'
}

Это тоже помогло мне, на удивление. Похоже, что это заставило перекомпилировать. Пробовал несколько чисток / кеша раньше без посторонней помощи
Дитер Менн

Что бы это ни стоило, проблема для меня была исправлена ​​как решение, которое я предлагаю выше. Однако причина была в том, что я использовал плагин, который не поддерживал команду «реализация». Поэтому я бы посоветовал вам посмотреть, есть ли обновления для некоторых плагинов вашего проекта. Возможно, лучшим подходом было бы обновить плагин, поскольку Gradle хочет отказаться от команды «compile»
bremen_matt

1

Я перепробовал все решения, но ни одно из них не помогло. В конце я запускаю тест в режиме отладки и .... он начал работать. Может быть, кэш какого-то мавена был очищен. Сложно сказать. Оно работает. Пытатьсяmvn test -X


1

Просто щелкните правой кнопкой мыши по файлу в окнах проектов и выберите

«Запустите YourTest ».

Теперь все начинается нормально, возможно потому, что неправильная конфигурация запуска перестраивается заново.


1

Это может произойти (хотя бы один раз для меня;) после установки новой версии IntelliJ, а плагины IntelliJ еще не обновлены.

Возможно, вам придется сделать это вручную Check for updates…из меню справки IntelliJ.


1

В структуре вашего проекта Maven src / main / java щелкните правой кнопкой мыши на каталоге java и выберите опцию Пометить каталог как -> Sources Root

Аналогичным образом проделайте то же самое с тестовой директорией: src / test / java щелкните правой кнопкой мыши на директории java и выберите опцию Пометить директорию как -> Тестовые источники Root

Работал на меня :-)


1

выполните следующие шаги в Intellij (со скриншотами для лучшего понимания):

  1. перейдите в Файлы -> Структура проекта

введите описание изображения здесь

  1. перейдите к модулям и теперь выберите модуль, в котором присутствует ваш тестовый файл Junit, и установите переключатель «Использовать выходной путь компиляции модуля».

  2. Упомяните путь к папке с соответствующими классами, как на скриншоте.

введите описание изображения здесь

  1. Подай заявку и ладно. Это сработало для меня!

0

Та же проблема здесь с использованием IDEA 15.0.6, и ничто не помогло, за исключением случаев, когда я переименовал пакет, в котором находился тестовый класс. После этого я переименовал его обратно в исходное имя, и оно все еще работало, поэтому действие переименования могло очистить некоторый кэш.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.