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

Другие вопросы по тегам