Как я делаю декларацию доступной во время Знатока 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.
Ну, как вы указали, проблема в том, что MANIFEST.MF
создается во время package
и непосредственно включается в финальный jar, и все это происходит после test
. Поэтому я полагаю, что вам придется либо:
target/classes
до того, как будет слит во время package
). Я не знаю, есть ли такой вариант (и будет ли он работать).