2011-10-27 5 views
22

プロジェクトワークスペースの/ datatestフォルダ内にあるリソースをロードします。したがって、ファイル全体は/datatest/a.xmlになります。ユニットテストで必要なこのリソースの絶対パスを取得するにはどうすればいいですか?ユニットテストはどのマシンでも実行できますが、ハードコードする必要はありません。代わりにクラスローダーを使用しないでください。どうすればいいのですか ?groovyを使用して、プロジェクト構造からテストリソースをロードします。

+0

は、クラスパス上のプロジェクトワークスペースのですか?通常はありません。その場合、クラスローダーはそれを見ることができません –

+0

はいプロジェクトワークスペースはクラスパスに含まれています – Phoenix

+0

また、[この回答](http://stackoverflow.com/questions/14162100/convert-a-classpath-ファイル名/実際のファイル名/ 14162103#14162103) – GreenGiant

答えて

38

それはあなたのクラスパスにいた場合、これは動作するはずです:

String xmlString = this.getClass().getResource('/datatest/a.xml').text 
+0

実際には ".lst"ファイルです...例えば "a.lst" ...私はintelliJのコンパイラリソース設定に追加しましたが、 luck – Phoenix

+1

その場合、クラスパスにはありません –

+0

私はCLASS_PATHを明示的に定義していませんでしたが、このGroovy one-linerを実行することで現在のディレクトリが有効/デフォルトのCLASS_PATHに含まれていることがわかりました: 'this.class .classLoader.rootLoader.URLs.each {println it} ' - 後でファイルを開くために' getResource'ができるようにファイルを保存する場所が明確になりました。 – MarkHu

関連する問題