"Нет тестов JUnit" в Eclipse
Итак, я новичок в JUnit, и мы должны использовать его для задания домашней работы. Наш профессор дал нам проект, в котором есть один тестовый класс, BallTest.java
. Когда я нажимаю правой кнопкой мыши > Выполнить как > Тест JUnit, я получаю всплывающее сообщение об ошибке "Нет тестов JUnit". Я знаю, что на этот вопрос был дан ответ (Нет тестов, найденных с тестовым runner 'JUnit 4'), но закрытие затмения, перезапуск, очистка и построение не кажутся Работа. Ниже приведены скриншоты моей конфигурации запуска, пути сборки и класса, который я пытаюсь проверить.
![Run Configuration]()
![Build 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. Вы можете решить вышеуказанную проблему двумя способами:
У меня та же проблема и решается таким образом, что оба решения работают нормально.
Ответ 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
качестве суффикса.