0

我正在尝试使用buildr来构建我的 Java 项目。我有一堆 concordion 测试和 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但无济于事。我确定我只是缺少一些简单的东西。任何帮助将不胜感激。

4

3 回答 3

3

默认情况下,Buildr 使用分离源代码和资源的 mavens 约定。所以测试资源需要放在“src/test/resources”目录下。

于 2012-05-23T08:19:16.003 回答
0

确保您使用的是 this.getClass().getClassLoader().getResourceAsStream([your URL]);

而不仅仅是 new File([your URL]);

请参阅http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html#getResourceAsStream%28java.lang.String%29

于 2012-03-12T13:36:53.283 回答
0

理论上,构建器应该在<project-dir>/target/test/resources运行测试时将资源复制到类路径中并将其包含在类路径中。检查该目录是否存在,如果存在,是否为空。

出现此问题时您是否正在运行 Eclipse?如果是这样,这可能是 buildr 和 eclipse 之间的冲突。尝试关闭 Eclipse,然后buildr clean运行buildr test​​.

我见过类似的问题,我的理论是 Eclipse 会在删除目标目录后立即创建空目标目录,例如 Buildr。然后 Buildr 检查目标目录的时间戳,发现它比任何源资源都更新,并认为它必须是最新的。因此,任何创建空目标资源目录的程序理论上都可能导致此问题。

于 2012-07-18T20:36:53.400 回答