Buildr - поместить тестовые ресурсы в classpath
Я пытаюсь использовать buildr
построить мой проект Java. У меня есть куча тестов на соответствие и спецификации HTML, расположенные примерно так:
src/test/java/spec/x/y/z/SomethingTest.java
src/test/resources/spec/x/y/z/Something.html
buildr
находит актуальный тестовый код (SomethingTest.java
) и запускает его, но HTML не попадает в путь к классам, поэтому тест не пройден. Я получаю следующую ошибку:
[junit] Testcase: [Concordion Specification for 'Something'] took 0.002 sec
[junit] Caused an ERROR
[junit] Resource '[classpath: /x/y/z/Something.html]' not found
[junit] java.io.IOException: Resource '[classpath: /x/y/z/Something.html]' not found
[junit] at org.concordion.internal.ClassPathSource.createInputStream(ClassPathSource.java:15)
[junit] at org.concordion.internal.XMLSpecificationReader.readSpecification(XMLSpecificationReader.java:25)
[junit] at org.concordion.Concordion.process(Concordion.java:30)
[junit] at org.concordion.Concordion.process(Concordion.java:26)
[junit] at org.concordion.internal.FixtureRunner.run(FixtureRunner.java:18)
[junit] at org.concordion.integration.junit4.ConcordionRunner$1.evaluate(ConcordionRunner.java:113)
[junit] at org.concordion.integration.junit4.ConcordionRunner.runChild(ConcordionRunner.java:104)
[junit] at org.concordion.integration.junit4.ConcordionRunner.runChild(ConcordionRunner.java:18)
[junit]
[junit] TEST x.y.z.SomethingTest FAILED
мой buildfile
как следует:
repositories.remote = 'http://www.ibiblio.org/maven2'
JODA = 'joda-time:joda-time:jar:2.0'
CONCORDION = 'org.concordion:concordion:jar:1.4.2'
XERCES = 'xerces:xercesImpl:jar:2.8.1'
XOM = 'xom:xom:jar:1.2.5'
define 'my-project' do
project.version = '0.0.1'
compile.with JODA
test.with XERCES, XOM, CONCORDION
package :jar
end
Я пытался заставить файлы HTML на пути к классам, используя варианты Java.classpath << 'src/test/resources/x/y/z'
а также test.resources.include
но безрезультатно. Я уверен, что мне просто не хватает чего-то простого. Любая помощь будет принята с благодарностью.
3 ответа
По умолчанию Buildr использует соглашение mavens о разделении исходного кода и ресурсов. Поэтому тестовые ресурсы должны быть помещены в каталог "src/test/resources".
Теоретически, Buildr должен копировать ресурсы в <project-dir>/target/test/resources
и включите это в classpath при запуске тестов. Проверьте, существует ли этот каталог, и если да, то если он пуст.
Вы используете Eclipse, пока возникает эта проблема? Если это так, это может быть конфликт между buildr и затмением. Попробуйте выключить Eclipse, затем запустите buildr clean
а также buildr test
,
Я видел подобные проблемы, и моя теория состоит в том, что Eclipse создает пустые целевые каталоги, как только они удаляются, например, Buildr. Затем Buildr проверяет временную метку целевого каталога и видит, что он более поздний, чем любой из исходных ресурсов, и считает, что он должен быть актуальным. Таким образом, любая программа, которая создает пустые целевые каталоги ресурсов, теоретически может вызвать эту проблему.
Убедитесь, что вы используете this.getClass().getClassLoader().getResourceAsStream([ваш URL]);
а не просто новый файл ([ваш URL]);
см. http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html