0

私は自分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、役に立ちませんでした。単純なものが欠けていると確信しています。どんな助けでも大歓迎です。

4

3 に答える 3

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

Builder は理論上、リソースをコピーして<project-dir>/target/test/resources、テストの実行時にこれをクラスパスに含める必要があります。このディレクトリが存在するかどうかを確認し、存在する場合は空かどうかを確認します。

この問題が発生している間、Eclipse を実行していますか? その場合、これは buildr と eclipse の間の競合である可能性があります。Eclipse をシャットダウンしてから、 and を実行してみてbuildr cleanくださいbuildr test

私は同様の問題を見てきました。私の理論では、Eclipse は、たとえば Buildr によって削除されるとすぐに空のターゲット ディレクトリを作成します。次に、Buildr はターゲット ディレクトリのタイムスタンプをチェックし、それがどのソース リソースよりも新しいことを確認し、最新である必要があると判断します。したがって、空のターゲット リソース ディレクトリを作成するプログラムは、理論的にはこの問題を引き起こす可能性があります。

于 2012-07-18T20:36:53.400 に答える