it-roy-ru.com

Тестов с бегуном '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>

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

95
user281070

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

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

144
Germán

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

41
JamesG

В контекстном меню вашего каталога «test» выберите «Build path» -> «Использовать как исходную папку» . Eclipse должен видеть ваши файлы unitTests.Java в качестве исходных файлов . Предупреждение «Тесты JUnit не найдены» происходит потому, что в вашем каталоге 'build' нет файлов unitTests.class

34
Dima

Проверьте, расширяет ли ваш тестовый класс «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
28
nephilim

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

27
toomasr

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

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

@Test
public void testParse()
{

}
5
Mike Choi

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

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

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

4
Eyal Zamir

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

Пример:

@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})
4
Roman C

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

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

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

@BeforeClass
public void testBeforeClass(){
}

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

@BeforeClass
public static void testBeforeClass(){
}

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

4
revindran

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

3
Mahesh

Моя проблема заключалась в том, что объявление import org.junit.Test; исчезло (или не было добавлено?). После добавления мне пришлось удалить еще одно объявление import (Eclipse подскажет вам, какое именно), и все снова заработало.

3
Sergii

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

3
Josh T

Я попробовал решение от Germán . Это работало для всех методов из моего класса, но у меня много классов в моем проекте.

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

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

2
Footix29

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

2
Matthew Wise

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

1
Todor Kolev

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

1
Rajith

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

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

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

1
VonC

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

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

1
SimonB

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

1
user3022123

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

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

1
cellepo

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

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

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

0
MindBrain

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

0
Anna

Я начал работать с Selenium и Eclipse в своей работе, и я делал свой первый автоматический тест, и я удалил из кода заметки @Before, @Test и @After, и у меня возникла эта проблема: «Не найдено ни одного теста с бегущим тестом junit4» ,.

Моим решением было просто снова добавить примечания @Before, @Test и @After, и с этим мой скрипт работал. Важно не удалять это из кода.

Это простой тест, который использует Google для поиска чего-либо:

import Java.util.regex.Pattern;
import Java.util.concurrent.TimeUnit;

import org.junit.*;

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import org.openqa.Selenium.*;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.openqa.Selenium.support.ui.Select;

public class TestingClass {

    private WebDriver driver;
    //Creates an instance of the FirefoxDriver
    **@Before**
    public void SetUp() throws Exception {
        driver = new FirefoxDriver();
    }

    **@Test**   
    //Search using keyword through Google Search
    public void TestTestClass2 () throws Exception {
        driver.get("http://www.google.com.mx/");
        driver.findElement(By.name("q")).sendKeys("Selenium");
        Thread.sleep(10000);
        driver.findElement(By.name("btnG")).click();
        Thread.sleep(10000);
    }

    //Kill all the WebDriver instances
    **@After**
    public void TearDown() throws Exception {
        driver.quit();
    }

}
0
JuanTorre

Я также использую Eclipse с Maven (m2e 1.4). Тесты выполнялись с Maven, но не с Eclipse ... даже после нескольких применений Maven>Update project.

Моим решением было добавить несколько строк в .classpath, сгенерированный m2e. Линии теперь торчат.

<classpathentry kind="src" output="target/test-classes" path="src/test/Java">
  <attributes>
    <attribute name="optional" value="true"/>
    <attribute name="maven.pomderived" value="true"/>
  </attributes>
</classpathentry>
0
pascal

Мне пришлось сделать очистку mvn в командной строке, а затем проект -> очистить в Eclipse. Я переименовал класс заранее, затем переименовал его обратно, но я сомневаюсь, что это помогло.

0
joe otherside

Существует еще один шанс, что вы могли изменить 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.
0
Kundan Atre

У меня есть эта проблема время от времени. Больше всего мне нужно решить проблему, выполнив тест JUnit из конфигурации «Выполнить» ... убедившись, что JUnit 4 установлен в качестве тестового прогона.

Как правило, я вижу эту проблему при попытке запустить как ... тест Junit из контекстного меню в проводнике пакетов. Если щелкнуть правой кнопкой мыши код для теста, который вы пытаетесь запустить, и вместо того, чтобы выбрать Запуск от имени ... Junit Test, вы выбираете Запустить конфигурации ... убедитесь, что Project, Test Class и Runner теста установлены правильно, нажав "Применить", затем запустите работает все время для меня.

0
theINtoy

Я обнаружил, что Eclipse, похоже, выполняет тесты в стиле JUnit 3 только в том случае, если ваш тестовый класс расширяется от TestCase. Если вы удалите наследство, аннотации сработали для меня.

Помните, что вам необходимо статически импортировать все необходимые методы assert*, такие как import static org.junit.Assert.*.

0
Martin C.

Основан ли ваш проект на Eclipse? Если это так, вам может потребоваться обновить версию m2Eclipse. 

Просто быстрое примечание: у меня есть проект в Затмение, основанное на Maven, и изначально сгенерирован с помощью мастера «new maven project» в Eclipse. Я используя JUnit 4.5 для модульных тестов, и вполне мог бы запустить тесты из командной строки, используя maven, и индивидуальные тесты из Eclipse с использованием запустить как тест JUnit .... Однако, когда я попытался запустить все тесты в проект, вызвав запустить как JUnit проверить ... на корневом узле проекта, Eclipse пожаловалась на то, что "тесты не найдены С тестовым раннером junit 4". Решено Обновление m2Eclipse до последней версии стабильная разработка сборки из Сайт обновлений m2Eclipse (в частности, I обновлен с версии 0.9.8.200905041414 до версии 0.9.9.200907201116 в Eclipse Galileo).

Отсюда: http://nuin.blogspot.com/2009/07/m2Eclipse-and-junit4-no-tests-found.html

0
b.roth

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

testNG

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

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

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

0
mohsen.nour

При использовании ScalaIDE (3.0.4-2.11-20140723-2253-Typesafe) у меня была похожая проблема с контекстным меню Right Click Scala Test Class-> Run As -> Scala Junit Test.

Я попытался отредактировать класс (но не для ошибки компиляции), очистить, закрыть проект, закрыть Eclipse. Ни один из них не работал, чтобы восстановить контекстное меню для классов, которые ранее работали хорошо. Тестовые классы не используют аннотацию @Test и вместо этого используют аннотацию @RunWith(classOf[JUnitRunner]) вверху класса с использованием кода ScalaTest.

Когда я попытался выбрать Scala Junit Test непосредственно в редакторе запуска Run Configuration, я получил диалоговое окно с вопросом. Ответ Footix29 был ключевым для меня.

Я заметил, что хотя я несколько раз чистил свой проект, мои классы в каталоге/bin фактически не перестраивались в течение некоторого времени.

Вот как я вернулся в контекстное меню и смог снова запустить Scala Junit Tests:

  • manually очистил классы, удалив /bin/<package dir>* через проводник
  • Project -> Cleaned проект вместе с полной перестройкой

Я подозреваю, что редактирование класса в целом способно очистить некоторое сохраненное состояние Eclipse и запустить его снова. В моем случае все предыдущие рабочие классы, которые я пробовал, потерпели неудачу, поэтому шаг manual clean был просто молотком, который мне был нужен. Тем не менее, другие приемы, которые влияют на концепцию Eclipse относительно пути к классу/состояния сборки, также должны работать.

Кроме того, я думаю, что это поведение было вызвано отчасти попыткой рефакторинга класса Scala путем его переименования (что не подходит для Scala Eclipse IDE), где вся очистка после первоначального изменения файла выполняется вручную. Не было никаких ошибок при сборке, но также не было предупреждений о том, что что-то определенно застряло в информации о состоянии сборки Eclipse.

0
n0741337

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

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

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

0
Vu Truong