我正在尝试使用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
我尝试使用Java.classpath << 'src/test/resources/x/y/z'
和test.resources.include
上的变体强制将HTML文件放到类路径上,但无济于事。我确定我只是遗漏了一些简单的东西。任何帮助将不胜感激。
答案 0 :(得分:3)
默认情况下,Buildr使用mavens分离源代码和资源的约定。因此,需要将测试资源放在“src / test / resources”目录中。
答案 1 :(得分:0)
确保你正在使用 this.getClass()。getClassLoader()。getResourceAsStream([你的网址]);
而不仅仅是新文件([您的网址]);
答案 2 :(得分:0)
Buildr理论上应该将资源复制到<project-dir>/target/test/resources
并在运行测试时将其包含在类路径中。检查此目录是否存在,如果存在,是否为空。
发生此问题时是否正在运行Eclipse?如果是这样,这可能是buildr和eclipse之间的冲突。尝试关闭Eclipse,然后运行buildr clean
和buildr test
。
我见过类似的问题,我的理论是Eclipse一旦删除就会创建空目标目录,例如Buildr。然后,Buildr检查目标目录的时间戳,并发现它比任何源资源更新,并且认为它必须是最新的。因此,任何创建空目标资源目录的程序理论上都可能导致此问题。