it-swarm.com.ru

"Тесты JUnit не найдены" в Eclipse

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

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());  
}

}
43
iaacp

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

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

59
iaacp

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

Перезапустите Eclipse

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

15
khylo

щелкните правой кнопкой мыши -> путь сборки -> удалить из пути сборки , а затем снова добавьте его -> Щелкните правой кнопкой мыши папку с именем «Test»> Build Path> Use as Source Folder.

9
Sagar

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

5
nikartix

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

import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class BallTest {
...
}
4
Klazen108
  1. Щелкните правой кнопкой мыши ваш проект -> Свойства-> Путь сборки Java и перейдите на вкладку Source, затем добавьте вашу тестовую папку src.
  2. Выберите меню «Проект» и снимите флажок «Автоматически строить», если выбран
  3. Выберите «Очистить», а затем выберите «Автоматически строить»
  4. Перезапустите Eclipse и запустите свой джунит.
3
Ranjith Sekar

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

2
Igor Semkiv

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

  1. Добавьте название вашего пакета в Java build path->source

  2. Переместите свой package/class в папку src

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

2
pintu

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

1
ankit

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

0
Kshitij Vashist

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

0
jiahut

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

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

0
rsb2097

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

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

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

0
Joshua Goldberg

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

0
Saikat

Столкнулся с этой проблемой при обновлении проектов на версии Eclipse. Например, Джунитс, работающий хорошо на Mars2.0, не работает на Neon. Следующее сработало для меня.

  1. Удалить папку .settings. Импортировать проект в Eclipse. 
  2. Удалить исходные папки. Затем снова используйте папки в качестве исходных папок. Например, удалить src/main/Java из пути сборки как исходную папку. -> Ok -> Снова сделайте эту папку исходной. Повторите это для main/resources, test/Java, test/resources 
0
Tushar Mishra

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

0
Jim