Как я делаю декларацию доступной во время Знатока unittest выполнение / Безошибочное unittest выполнение “mvn тест”?

Как я делаю декларацию доступной во время Знатока unittest выполнение / Безошибочное unittest выполнение "mvn тест"?

У меня есть проект с открытым исходным кодом, который я преобразовываю из Муравья Знатоку, включая его модульные тесты. Вот исходный репозиторий проекта с проектом Знатока: http://github.com/znerd/logdoc

Мой вопрос принадлежит основному модулю, названному "основой". Этот модуль имеет модульный тест, который тестирует поведение статического метода getVersion() в классе org.znerd.logdoc.Library. Этот метод возвраты:

Library.class.getPackage().getImplementationVersion()

getImplementationVersion() метод возвращает значение установки в файле манифеста.Пока все хорошо. Я протестировал это в прошлом, и оно работает хорошо, пока декларация действительно доступна на пути к классу в пути META-INF/MANIFEST.MF (или в файловой системе или в файле JAR).

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

mvn test

Безошибочные выполнения модульные тесты, но мой модульный тест перестал работать с сообщением, указывающим на это Library.getVersion() возвращенный null.

Когда я хочу проверить JAR, я нахожу, что он даже не был сгенерирован. Выполнения Знатока / Безошибочные выполнения модульные тесты против классов, прежде чем ресурсы добавляются к пути к классу.

Дальнейшее расследование показывает Безошибочный, генерирует его собственный файл JAR во временном каталоге, например.

/private/var/folders/TR/TREvj1wIHYyAcUy-xmc3UU+++TI/-Tmp-/surefirebooter7448562488934426857.jar

И затем использование этот JAR для загрузки класса Библиотеки. Этот JAR не содержит ресурсы, под которыми я придерживался src/main/resources. Так помещение a META-INF/MANIFEST.MF файл также не работает.

Таким образом, как я говорю Безошибочный иметь мой META-INF/MANIFEST.MF файл, доступный от того же загрузчика класса как Library класс.

Обратите внимание, что я использую Знатока 2.2.0, Java 1.6.0_17 на Mac OS X 10.6.2, с JUnit 4.8.1.

9
задан Ernst de Haan 1 June 2010 в 20:15
поделиться

1 ответ

Ну, как вы указали, проблема в том, что MANIFEST.MF создается во время package и непосредственно включается в финальный jar, и все это происходит после test. Поэтому я полагаю, что вам придется либо:

  • предоставить свой собственный MANIFEST.MF (который будет доступен в target/classes до того, как будет слит во время package). Я не знаю, есть ли такой вариант (и будет ли он работать).
  • поместите и запустите свой тест из другого модуля в зависимости от JAR.
2
ответ дан 5 December 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: