2012-02-02 8 views
4

サービスから返されたXMLをそのXSDに対して検証するJUnitテストを作成しました。私は最初にXSDをsrc/main/resrouces/xsd/<filename>.xsdとしましたが、今はアプリケーションをデプロイするときに一般公開されるように、静的リソースとしてwebappの下に移動する必要があります。JUnitテストからwebappの下の静的リソースにアクセスするにはどうすればよいですか?

私は誰かが間違ったものを遅かれ早かれ修正することを期待しているので、2つのコピーを持っていないと思います。

getClass().getResource("/xsd/<filename>.xsd")というファイルをロードしていましたが、リソースがwebappに移動された場合、どのようにアクセスしますか?

答えて

3

あなたのpomにリソースディレクトリとして追加してください。

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
    </resource> 
    <resource> 
     <directory>src/main/webapp</directory> 
     <includes> 
      <include>xsd/schema.xsd</include> 
     </includes> 
    </resource> 
</resources> 
Javaの使用では

String path = "/xsd/schema.xsd"; 
InputStream is = getClass().getResourceAsStream(path); 
+0

私は最終的に別のルートに行ってきましたので、私はこれをテストしていませんが、私はそれが動作しますと仮定します。 –

0

あなたのリソースはクラスパスに残っているので、通常は現在の方法でロードしてください。

3

WARが作成されデプロイされるときにCLASSPATHに格納されますが、JUnitテスト(mavenとIDEの両方)ではコンテンツが配置されません。

new File("src/main/webapp/xsd/<filename>.xsd"); 

これは、テストを実行している間、プロジェクトのメインディレクトリが現在のディレクトリである限り動作します。悲しいが本当。

関連する問題