Добавление тестовых файлов в тест Junit в Netbeans 6.7.1 - проблемы с getResource, отсутствующий файл в каталоге сборки

Я добавляю тест Junit в один из моих классов с помощью NetBeans 6.7.1, мне нужно иметь возможность загрузить XML-файл, специфичный для тестирования, поэтому я включил его в папку «Test Packages» (вместе с моими реальный тест). У меня 2 проблемы,

(1) getResource ищет не в том каталоге

(2) мой тестовый XML-файл не копируется, когда я запускаю тесты (обратите внимание, эта функция работает, когда я добавляю файлы в каталог «Sources Packages»).

В моем тестовом классе:

this.getClass (). getResource ("/")

возвращает:

D: \ UserProfiles \ myName \ My Documents \ NetBeansProjects \ ProjectExample \ build \ classes

Мне тоже нужно вернуть:

D: \ UserProfiles \ myName \ My Documents \ NetBeansProjects \ ProjectExample \ build \ test \ classes

(Поскольку именно здесь собираются тестовые классы)

Кажется довольно хакерским вызовом getResource, получением родителя и последующим поиском в test \ classes. Это правильный способ получить путь к моему тестовому файлу? может это ошибка в netbeans?

Кроме того, когда я щелкаю правой кнопкой мыши на моем testFile и "запускаю тесты", только мои файлы тестовых классов копируются в каталог test / classes, а не мой тестовый файл xml. Как мне сообщить Netbeans, что необходимо скопировать обычный XML-файл вместе с файлами классов в каталог сборки.

Я также хотел бы избежать взлома сборки ant для копирования моих тестовых файлов.


person vicsz    schedule 10.11.2009    source источник
comment
Хорошо, проблема 2 была решена путем выполнения чистой сборки.   -  person vicsz    schedule 11.11.2009
comment
Хотя, когда я запускаю новый тест, эти файлы удаляются.   -  person vicsz    schedule 11.11.2009


Ответы (2)


Просто поместите свой файл в тот же пакет, что и ваш тест, скажем, data.xml в пакете foo.bar. Никакого копирования или взлома скрипта сборки не требуется, просто обратитесь к файлу следующим образом:

getClass().getResource("data.xml");

В качестве альтернативы вы можете сделать это:

getClass().getResource("/foo/bar/data.xml");
person candiru    schedule 10.11.2009
comment
Спасибо, но я бы предпочел, чтобы у меня был доступ к этим файлам, прежде чем я сделаю пакет ... т.е. я просто запускаю тесты, и файлы java компилируются в файлы классов. - person vicsz; 12.11.2009
comment
Что ты имеешь в виду? NetBeans просто скомпилирует ваши классы и запустит тесты, не создавая * .jar, и вы можете ссылаться на такой файл. - person candiru; 12.11.2009
comment
Просто щелкните правой кнопкой мыши тестовый файл и выберите тестовый файл ... только выбранный файл будет построен и протестирован. Я нахожу это намного более эффективным, чем перестройка всего проекта, когда я просто хочу запустить один новый (с использованием TDD). - person vicsz; 13.11.2009

Недавно я столкнулся с этой проблемой, используя NetBeans 6.9.1. Вот как я это решил.

  1. Откройте проект-> Свойства-> Библиотеки
  2. Выберите вкладку "Выполнить тесты".
  3. Нажмите на Добавить банку / папку.
  4. Перейдите туда, где вы сохранили файлы ресурсов
  5. Добавить папку

Теперь запуск тестов с использованием этих ресурсов будет работать. Я тестировал это с помощью NetBeans 6.9.1 и простого Java-приложения.

NetBeans по умолчанию создает файлы ресурсов в каталоге src (пакет по умолчанию), поэтому я добавил папку src на шаге 5 выше. После того, как вы выполните эти тесты, ищущие файл ресурсов в пути к классам, найдут его.

Поскольку NetBeans по умолчанию упаковывает ресурсы, находящиеся в папке src, вам не нужно копировать файлы и синхронизировать их.

Если вы хотите, чтобы тестовые ресурсы отличались от производственных, вы можете добавить тестовые ресурсы в пакет по умолчанию в тестовой папке. Затем вместо добавления папки src на шаге 4/5 выше добавьте тестовую папку.

person Mark    schedule 31.12.2010