Тестов с бегуном 'JUnit 4' не найдено

Мой тест на Java хорошо работал в Eclipse. Но теперь, когда я снова запускаю тест из меню запуска, я получаю следующее сообщение:

No tests found with test runner 'JUnit 4'

в .classpath файл у меня есть все jar файлы, и в конце есть:

<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

Как я могу устранить эту ошибку и снова запустить тесты?

49 ответов

Это только что случилось со мной. Восстановление или перезапуск Eclipse не помогли.

Я решил это, переименовав один из методов тестирования, чтобы начать с "test..." (стиль JUnit3), а затем все тесты были найдены. Я переименовал его обратно в прежнее состояние, и оно все еще работает.

Когда мы получаем эти ошибки, кажется, что Eclipse просто запутался. Перезапустите Eclipse, обновите проект, очистите его, дайте Eclipse перестроить его и попробуйте снова. В большинстве случаев это работает как шарм.

Проверьте, расширяет ли ваш тестовый класс "TestCase". если так, удалите это предложение. Ваш класс не должен расширяться от класса "TestCase". Это большинство случаев, которые я встречал.

public class MyTestCase extends TestCase{
  @Test
  public void checkSomething() {
    //...
  }
}
//Result> AssertionFailedError: No test Found in MyTestCase

Следующий TestCase должен быть в порядке.

public class MyTestCase {
  @Test
  public void checkSomething() {
    //...
  }
}
//Works fine

В контекстном меню вашего каталога "test" выберите "Build path" -> "Use as source folder". Eclipse должен видеть ваши файлы unitTests.java как исходные файлы. Предупреждение "Тесты JUnit не найдены" происходит из-за отсутствия файлов unitTests.class в каталоге "build"

Я столкнулся с той же проблемой, и я отладил ее на плохих примерах в Интернете и внутренних ресурсах junit. По сути, не заставляйте ваш класс расширять TestCase, как показывают некоторые примеры для Junit 4.x. Используйте какое-нибудь соглашение об именах Test или, если вы хотите иметь аннотацию, вы можете использовать @RunWith(JUnit4.class).

Если вам нужен доступ к методам assert, расширьте Assert или используйте статический импорт.

Если ваш класс расширяет TestCase, то даже если вы используете Junit 4 Runner, он будет работать как 3. Это потому, что в коде инициализации есть обнаружение:

Смотрите JUnit3Builder и строки:

boolean isPre4Test(Class<?> testClass) {
    return junit.framework.TestCase.class.isAssignableFrom(testClass);
}

Это возвращает true, и тест на совместимость с junit4 не будет опробован.

Попробуйте добавить

@ Тест над методом для теста, как это

@Test
public void testParse()
{

}

Еще одно возможное решение, которое я выброшу в кольцо: я не смог запустить тестовый класс ни из окна редактора, ни из Package Explorer, но щелкнул правой кнопкой мыши на имени класса в представлении Outline и выбрал Run As JUnit Тест сработал... Иди разберись!

Я узнал ответ:

Я получил эту ошибку, когда выполнил тестовый автономный тест от eclipse (щелкните правой кнопкой мыши на методе и выберите запуск в качестве теста junit),

Когда я выполнил полный класс как тест junit, тест выполнялся правильно с параметрами.

Нет тестовых костюмов в JUnit4. Вместо этого используйте аннотации или используйте старые соглашения об именах JUnit3.

Пример:

@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})

Это случилось и со мной. Я попытался перезапустить Eclipse и также поставил перед тестами методы с тестами. Ни один не работал.

Следующий шаг сработал: замените все ваши методы тестирования, присутствующие в @BeforeClass и @AfterClass, на статические методы.

т.е. если у вас есть метод теста в следующем формате:

@BeforeClass
public void testBeforeClass(){
}

затем измените его на:

@BeforeClass
public static void testBeforeClass(){
}

Это сработало для меня.

Очень поздно, но что решило проблему для меня, так это то, что все имена моих методов тестирования начинались с заглавных букв: "public void Test". Создание строчной буквы сработало.

Моя проблема была в том, что декларация import org.junit.Test; исчез (или не был добавлен?). После добавления пришлось удалить другой import Декларация (Затмение подскажет вам, какой), и все снова заработало.

Когда я сталкиваюсь с этой проблемой, я просто редактирую файл и сохраняю его... работает как шарм

Шесть лет спустя... и все еще есть проблемы с Eclipse и иногда не найти JUnits.

В моем Eclipse Mars 2 я обнаружил, что он не распознает тестовые классы, извлеченные из git, если их больше 9 или 10 @Test аннотации в файле. Мне нужно закомментировать любые дополнительные тесты, запустить тестовый класс, затем раскомментировать их и повторно запустить класс. Пойди разберись...

Я попробовал решение от Германа. Он работал для всех методов из моего класса, но у меня есть много классов в моем проекте.

Поэтому я попытался удалить из пути сборки, а затем снова добавить его. Это сработало отлично.

Надеюсь, поможет.

Я также столкнулся с той же проблемой при запуске теста JUnit. Я решил эту проблему, поместив аннотацию @Test чуть выше основной тестовой функции.

Закрыть и открыть проект работал на меня.

Есть еще один шанс, что вы могли изменить Junit Test с более низкой версии (например, Junit 3) на Junit 4 . Это так, выполните следующие шаги:-

1. Right Click on class
2. Select Run as >> "Run Configurations"
3. Check your "Test Runner" option in new window
4. If it not same as maven change it for example change it as Junit 4.

Вы можете решить эту проблему, выполнив следующие действия:

  • Щелкните правой кнопкой мыши папку с именем "Test"> Build Path > Use as Source Folder
  • Или вы можете установить classpath так же, как: <classpathentry kind="src" path="src/test/java"/>, Вы заменяете "src/test/java" на свой тестовый пакет

Эта проблема произошла из-за junit не может распознать ваш исходный код:D

Проверьте, является ли папка, в которой находятся ваши тесты, исходной папкой. Если нет - щелкните правой кнопкой мыши и используйте в качестве исходной папки.

То, что исправило мой случай, было похоже на ответ @JamesG: я перезапустил Eclipse, перестроил проект и обновил его; НО до того, как я это сделал, я сначала закрыл проект (щелкнув правой кнопкой мыши проект в проводнике пакетов -> Закрыть проект), а затем снова открыл его. Тогда это сработало.

Обходное решение, которое я нашел перед тем, как найти то лучшее решение, которое я только что описал: скопируйте тестовый класс и запустите тестовый класс как JUnit.

Добавить @Testповерх вашего теста.
Наведите указатель мыши на аннотацию.
Выберите 'добавить библиотеку junit 4 в путь к классам'

У меня недавно были проблемы с этим, которые, кажется, исправлены в последней версии Eclipse.

eclipse-java 4.11.0,2019-03:R -> 4.12.0,2019-06:R

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

Но это может привести к появлению сообщения об ошибке "Тесты не найдены с помощью JUnit 4".

Или вы сделали изменение в своем тестовом классе, удалив @Test аннотаций.
Смотрите эту вики-страницу.

Щелкните правой кнопкой мыши Проект -> Зависимости сборки -> удалите те, которые были исключены из пути сборки -> Нажмите ОК

Щелкните правой кнопкой мыши Проект -> Maven -> Обновить проект.

Вы должны быть хорошими, чтобы пойти..

Моя проблема заключалась в использовании **

TestNG

** пакет org.testng.Assert;

Вы можете заменить его в библиотеках проекта (Maven) на JUnit, а затем необходимо провести рефакторинг проекта.
ИЛИ добавить плагин TestNG Eclipse

http://testng.org/doc/eclipse.html

Вы могли бы решить эту проблему, просто переименовав свой тестовый класс, получив имя, заканчивающееся на Test, например ThisAndThatTest.

Я попробовал все ответы выше.

В моем случае мой проект имел зависимости как junit4, так и junit5. Я пытался использовать junit4, поэтому, убедившись, что я использовал правильный импорт junit4, он все равно не работал.

Я наконец нашел проблему. Средство запуска JUnit eclipse, используемое в конфигурации отладки, было установлено на JUnit5. Я изменил его на JUnit4, и теперь тесты найдены и выполнены.

В моем случае проблема заключалась в параметрах дженериков:

public class TestClass<T extends Serializable> {

удаление:

и этот вариант снова стал доступен.

Я использую Junit4

Используя JUnit4 и проект на основе Gradle, ни одно из предыдущих предложений не сработало в моем случае. Что сработало :

  1. Щелкните правой кнопкой мыши testисходную папку и нажмите Properties
  2. Прыгать на Run/Debug Settings
  3. Выберите все конфигурации запуска/отладки и удалите их.

Я предполагаю, что одна из этих конфигураций запуска испортила мой бегун JUnit4. Сброс всех конфигураций запуска/отладки решил, что JUnit4 не находит никаких тестов для запуска.

Другие вопросы по тегам