Тесты JUnit в Eclipse Indigo ничего не сообщают?

#java #eclipse #testing #junit

#java #eclipse #тестирование #junit

Вопрос:

Я пытаюсь заставить тесты JUnit 4 правильно запускаться в Eclipse Indigo SR1, но что-то не так. В простейшем случае, о котором я могу думать (как показано ниже):

 package ints;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class IntTest {

    @Before
    public void setUp() throws Exception {
        System.out.println("setUp()");
    }

    @Test
    public void test() {
        System.out.println("assertEquals(1, 1);");
        assertEquals(1, 1);
    }

    @Test
    public void test2() {
        System.out.println("assertEquals(1, 2);");
        assertEquals(1, 2);
    }
}
  

Когда я запускаю это в Eclipse (Alt Shift X, T), представление JUnit сообщает «Запуски: 0/0, Ошибки: 0, сбои: 0», в то время как консоль отображает приведенное ниже, но я больше ничего не получаю. Я могу создавать исключения из методов тестирования, и они также не отображаются.

 setUp()
assertEquals(1, 1);
setUp()
assertEquals(1, 2);
  

Есть идеи относительно того, что дает?

Комментарии:

1. Хм, странно. Просто для удовольствия я открыл новое рабочее пространство и попробовал его. По-прежнему ничего.

2. Java 1.7.0, 32-разрядная и 64-разрядная версии. Windows 7, 64-разрядная версия.

3. Вы пробовали использовать Java 1.6.x?

4. Я попробовал Java 1.6. Сначала удалил все мои JDK / JRE. Затем установил 1.6u29 (32 и 64 бит), и это сработало. Установлен 1.7u1 (64-разрядный), и это сработало. Установлен 1.7u1 (32-разрядный), и он перестал работать. Удалил 1.7u1 (32 бит), и он снова начал работать. У меня это работает, что приятно, но это похоже на волшебство.

Ответ №1:

Я думаю, что в вашей системе установлены как JUnit 3, так и JUnit4, и проект импортирует неправильную версию JUnit. Это вызовет всевозможные странные проблемы.

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

Проверьте свой buildpath, чтобы узнать, какой JUnit вы используете.

Комментарии:

1. Если Eclipse не лжет мне, org.junit_4.8.2_v20110321-1705junit.jar находится на пути к классу (через зависимости подключаемых модулей или напрямую через JUnit4).

2. Кроме того, я не уверен, заметили ли вы это, но мои System.outs записываются, поэтому вызывается мой код.

3. Хм. Да, вы правы. Что ж, код правильный, поэтому ошибка должна быть в другом месте. Вы уверены, что в представлении JUnit отображается ваш тест? Он должен сказать что-то вроде «IntTest [Runner: JUnit4] (0.0000с)». Тот же результат, если щелкнуть правой кнопкой мыши по проекту и выбрать «Запустить как …» — «Тест JUnit»?

4. В представлении JUnit отображается «IntTest», а затем переключается на «Завершенный». Консоль отображает вышеуказанный вывод. Я получаю тот же результат (за вычетом отображаемого имени), если я щелкаю правой кнопкой мыши по проекту и запускаю его как тест JUnit.

5. И там также написано «[Runner: JUnit4]» ? Если да, то у меня нет идей. Попробуйте загрузить новое Eclipse и попробуйте использовать старое рабочее пространство. Запустите новое рабочее пространство / проект и попробуйте старую установку eclipse. Посмотрите, имеет ли это какое-либо значение.

Ответ №2:

У меня была такая же проблема с JUnit. Я запустил обновление своего старого доброго JDK, но проблема осталась, поэтому я полностью удалил все JDK-ы со своего компьютера и установил новейший jdk 6, и Eclipse Indigo волшебным образом начал работать должным образом.

Возможно, постоянно обновляемый jdk 6 обновлен неправильно…

Ответ №3:

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

Ответ №4:

По какой-то причине удаление 32-разрядного JDK 1.7 решило эту проблему для меня. Похоже, это не было на пути или что-то еще, что я мог понять. Это слишком похоже на волшебство, но это сработало.

У меня было установлено 4 JDK (1.6 и 1.7, 32-разрядные и 64-разрядные версии). Теперь у меня есть 3.

Ответ №5:

У меня была такая же проблема. JUnit запускается, но не работает, не завершен и не дает никаких исключений. Для меня сработала команда проверки брандмауэра iptables и добавления запуска:

 iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
  

JUnit нужно это разрешение для запуска — разрешить взаимодействие с внутренним интерфейсом.