Добавление тестовых файлов в тест Junit в Netbeans 6.7.1 - проблемы с getResource, отсутствует файл в каталоге сборки - PullRequest
1 голос
/ 11 ноября 2009

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

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

(2) мой тестовый файл xml не копируется при запуске тестов (обратите внимание, эта функция работает с добавлением файлов в каталог «Исходные пакеты»).

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

this.getClass (). GetResource ( "/")

возвращается:

D: \ UserProfiles \ myName \ Мои документы \ NetBeansProjects \ ProjectExample \ build \ classes

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

D: \ UserProfiles \ myName \ Мои документы \ NetBeansProjects \ ProjectExample \ build \ test \ classes

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 01 января 2011

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

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

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

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

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

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

1 голос
/ 11 ноября 2009

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

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

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

getClass().getResource("/foo/bar/data.xml");
...