"Нет тестов JUnit" в Eclipse

Итак, я новичок в JUnit, и мы должны использовать его для задания домашней работы. Наш профессор дал нам проект, в котором есть один тестовый класс, BallTest.java. Когда я нажимаю правой кнопкой мыши > Выполнить как > Тест JUnit, я получаю всплывающее сообщение об ошибке "Нет тестов JUnit". Я знаю, что на этот вопрос был дан ответ (Нет тестов, найденных с тестовым runner 'JUnit 4'), но закрытие затмения, перезапуск, очистка и построение не кажутся Работа. Ниже приведены скриншоты моей конфигурации запуска, пути сборки и класса, который я пытаюсь проверить.

Run ConfigurationBuild Path

BallTest.java

import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class BallTest {

Ball ball;

/**
 * @throws java.lang.Exception
 */
@Before
public void setUp() throws Exception {
    System.out.println("Setting up ...");
    Point2D p = new Point2D(0,0);
    ball = new Ball(p);
}

/**
 * @throws java.lang.Exception
 */
@After
public void tearDown() throws Exception {
    System.out.println("Tearing down ...");
    ball = null;
}

/**
 * Test method for {@link Ball#getCoordinates()}.
 */
@Test
public void testGetCoordinates() {
    assertNotNull(ball); // don't need Assert. because of the import statement above.
    Assert.assertEquals(ball.getCoordinates().getX(), 0);
    Assert.assertEquals(ball.getCoordinates().getY(), 0);
}

/**
 * Test method for {@link Ball#setCoordinates(Point2D)}.
 */
@Test
public void testSetCoordinates() {
    Assert.assertNotNull(ball);
    Point2D p = new Point2D(99,99);
    ball.setCoordinates(p);
    Assert.assertEquals(ball.getCoordinates().getX(), 99);
    Assert.assertEquals(ball.getCoordinates().getY(), 99);
}

/**
 * Test method for {@link Ball#Ball(Point2D)}.
 */
@Test
public void testBall() {
    Point2D p = new Point2D(49,30);
    ball = new Ball(p);
    Assert.assertNotNull(ball);
    Assert.assertEquals(ball.getCoordinates().getX(), 49);
    Assert.assertEquals(ball.getCoordinates().getY(), 30);

    //fail("Not yet implemented");
}

public static void main (String[] args) {
         Result result = JUnitCore.runClasses(BallTest.class);
         for (Failure failure : result.getFailures()) { 
                System.out.println(failure.toString()); 
            } 
        System.out.println(result.wasSuccessful());  
}

}

Ответ 1

Щелкните правой кнопкой мыши Project> Properties> Java Build Path> Добавить папку Test в качестве исходной папки.

Все исходные папки, включая тестовые классы, должны быть в Eclipse Java Build Path. Чтобы исходные данные, такие как основной и тестовый классы, можно было скомпилировать в каталог сборки (папка Eclipse по умолчанию - bin).

Ответ 2

Если ни один из других ответов не работает для вас, вот что сработало для меня.

Перезапустить eclipse

У меня правильно настроена исходная папка, а модульные тесты правильно аннотированы, но по-прежнему получают "Нет тестов JUnit" для одного проекта. После перезагрузки он сработал. Я использовал STS 3.6.2 на основе eclipse Luna 4.4.1

Ответ 3

щелкните правой кнопкой мыши → путь сборки → удалить из пути сборки а затем снова добавьте его → Щелкните правой кнопкой мыши по папке "Тест" > "Путь сборки" > "Использовать как исходную папку".

Ответ 4

Похоже, что вам не хватает определения бегуна на вашем тестовом классе, что может быть причиной:

import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class BallTest {
...
}

Ответ 5

У меня была та же проблема и решена вот так: Я удалил аннотацию @Test и перепечатал ее. Это просто сработало, я понятия не имею, почему.

Ответ 6

  • Щелкните правой кнопкой мыши свой проект → Свойства- > Путь сборки Java и перейдите на вкладку "Источник", затем добавьте папку тестового src.
  • Выберите меню "Проект" и выберите "Создать автоматически", если выбрано
  • Выберите "Очистить" и затем выберите "Создать автоматически"
  • Перезапустите Eclipse и запустите junit.

Ответ 7

Любое решение не сработало для меня, пока я не изменю имя моего метода тестирования. Когда имя метода тестирования начинается с "теста", это нормально. Я новичок в программировании в андроиде, и для меня это был большой сюрприз.

Ответ 8

Я думаю, что вы создали свои тестовые классы вне папки src. Вы можете решить вышеуказанную проблему двумя способами:

  • Добавьте название своего пакета в java build path->source

  • Переместите папку package/class в src

У меня та же проблема и решается таким образом, что оба решения работают нормально.

Ответ 9

Я решил проблему, настроив путь сборки. Щелкните правой кнопкой мыши проект (или любой из подпапок) → Путь сборки → Настроить путь сборки. Когда откроется окно свойств, щелкните вкладку "Источник" и добавьте папки src и tst. Но это одно не помогло мне. Как ни странно, мне пришлось повторять аннотации. (Project- > clean или restart также мог бы работать).

Ответ 10

Конфигурация запуска для тестового класса может создать еще одну причину (и решение) для этой проблемы.

Если вы перейдете к настройкам Run (или Debug) (используя cmd-3 или нажав на маленькие кнопки раскрывающегося списка на панели инструментов), вы можете увидеть конфигурацию, созданную для каждого тестируемого класса, с которым вы работали. Я обнаружил, что один из моих классов, который не запускался, имел конфигурацию запуска, где поле метода тестирования каким-то образом случайно заполнилось. Я должен был это понять, чтобы заставить его работать. При очистке он показывает (все методы) в легком тексте.

Я добавлю, что это странно - возможно, было что-то еще - это тоже не работало для меня, пока я не исправил поле "Имя", поэтому он включал только имя класса, как и другие конфигурации запуска JUnit.

Ответ 11

Возникла эта проблема при обновлении проектов через версии eclipse. Напр. junits, хорошо работающий в Mars2.0, не работал на Neon. Следующие работали для меня.

  • Удалить папку .settings. Импортируйте проект в eclipse.
  • Удалить исходные папки. Затем снова используйте папки в качестве исходных папок. например, удалить src/main/java из пути сборки в качестве исходной папки. → Ok → Снова сделайте эту папку исходной папкой. Повторите это для main/resources, test/java, test/resources

Ответ 12

Я использовал @RunWith(Parameterized.class), но пропустил, чтобы добавить аннотацию @Parameters в метод общедоступных статических параметров. После добавления аннотации он работал.

Ответ 13

Лучший способ решить эту проблему - установить для вашего класса Junit Test Case общедоступный модификатор Access, а затем запустить сценарий, щелкнув правой кнопкой мыши на классе Junit Test Case и запустить как Junit Test.

Ответ 14

Решение заключалось в том, чтобы после создания резервной копии папки src/test удалить ее из файловой системы, а затем снова создать.

Это после того, как я сделал подсказку "Удалить из пути сборки" и он прикрутил папки при открытии проекта в STS 4.

Ответ 15

В Eclipse Photon вам может понадобиться добавить JUnit 4 или 5 к пути сборки. Щелкните правой кнопкой мыши @Test и выберите "Добавить JUnit 4 для построения пути".

Ответ 16

junit4 требует, чтобы тестовое имя класса использовало Test качестве суффикса.