Тестов с бегуном 'JUnit 4' не найдено - PullRequest
98 голосов
/ 25 февраля 2010

Мой тест 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>

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

Ответы [ 36 ]

147 голосов
/ 06 июня 2010

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

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

41 голосов
/ 27 февраля 2010

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

34 голосов
/ 11 апреля 2011

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

29 голосов
/ 11 февраля 2011

Проверьте, расширяет ли ваш тестовый класс "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
27 голосов
/ 20 января 2011

Я столкнулся с той же проблемой, и я исправил ее на плохих примерах в Интернете и внутренних ресурсах 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 проверяться не будет.

5 голосов
/ 15 ноября 2012

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

@ Тестирование по методу выше для теста, подобного этому

@Test
public void testParse()
{

}
5 голосов
/ 04 февраля 2015

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

4 голосов
/ 01 августа 2012

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

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

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

@BeforeClass
public void testBeforeClass(){
}

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

@BeforeClass
public static void testBeforeClass(){
}

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

4 голосов
/ 08 декабря 2013

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

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

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

4 голосов
/ 22 марта 2012

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

Пример:

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