Отладка maven-тестов с помощью netbeans 6.9.1? - PullRequest
4 голосов
/ 30 ноября 2011

У меня есть проект maven в netbeans 6.9.1, там тестовый класс junit 4.4.

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

Теперь я выбираю из контекстного меню «файл теста отладки», при выводе он выглядит как

--- плагин maven-compiler-plugin: 2.3.2: testCompile (default-testCompile) @ <имя-проекта> --- Компиляция 2 исходных файлов в <путь-проекта> \ target \ test-classes

--- плагин maven-surefire: 2.7.2: тест (default-cli) @ <имя-проекта> --- Каталог отчетов Surefire: <путь-проекта> \ target \ surefire-reports


T E S T S


Нет тестов для запуска.

Что я проверил до сих пор:

  • Проект сборки находит тестовые файлы, но тем не менее есть и исправляет

  • Существует только один junit - 4.4 в * .pom зависимостях

  • сам файл класса выглядит как

    import junit.framework.TestCase;

    import org.junit.Test;

    открытый класс SomeTest расширяет TestCase { @Тестовое задание public void testFoo () генерирует исключение {/ --- /} }

  • Описание действия netbeans для отладки выглядит как

    выполнить цель: test-compile верный: test

    установить свойства: jpda.listen = верно maven.surefire.debug = -Xdebug -Xrunjdwp: transport = dt_socket, server = n, address = $ {jpda.address} jpda.stopclass = $ {packageClassName} failIfNoTests = false // это мое добавление, без которого все еще не получилось forkMode = один раз тест = $ {} имя класса

  • в проекте нет ни одного раздела с надёжными плагинами * .pom файлы

1 Ответ

3 голосов
/ 30 ноября 2011

Это не совсем вопрос NetBeans.

Вы определили тесты JUnit 3, но пытаетесь запустить их с помощью бегуна JUnit 4. Surefire использует следующее правило, чтобы определить, какой бегун использовать (из maven-surefire-plugin Junit )

if the JUnit version in the project >= 4.7 and the parallel attribute has ANY value
    use junit47 provider
if JUnit >= 4.0 is present
    use junit4 provider
else
    use junit3.8.1

В вашем проекте есть junit 4.4, поэтому он использует junit4. Поскольку у вас есть только 2 тестовых класса, лучший вариант - переопределить ваши тесты так, чтобы они были JUnit 4. Удалите расширения TestCase, добавьте аннотации @ Test / @ Before / @ After к своим тестам и полностью удалите JUnit 3.

Для получения дополнительной информации о выполнении миграции см. Лучший способ автоматического переноса тестов из JUnit 3 в JUnit 4?

...