2016-08-12 7 views
1

JAVA EEアプリケーションサーバーのビジネスコードに問題があります。 私たちは、この作品では、生産arquillianメインフォルダからリソースを追加します

InputStream inputStream = Thread 
       .currentThread() 
       .getContextClassLoader() 
       .getResourceAsStream(filePath); 

src/main/resourcesフォルダ内のいくつかのファイルにアクセスするが、私は私のarquillianテスト内でこの機能を使用するコードの一部をテストしたいと思います。

シュリ​​ンクラップを使用してtest.warを生成しています。

WebArchive testArchive = ShrinkWrap.create(WebArchive.class, "test.war") 
       .addPackages(true, "ch.microtronic.evending") 
       .addAsWebInfResource("wildfly-ds.xml") 
       .setWebXML(new File("src/main/webapp/WEB-INF/web.xml")) 
       .addAsResource("test-persistence.xml", "META-INF/persistence.xml"); 

私はsrc/main/resourcesからtest.warにリソースを追加するにはいくつかの問題を持っています。

ファイルはsrc/test/resourcesからのみ追加できます。私がしなければならない何

src 
|__main 
| |__java 
| |__resources 
| |__webapp 
| 
|__test 
    |__java 
    |__resources 

私たちのディレクトリ構造は次のようになりますか?

+0

を相対クラスパスに必要なことを言って、あなたは '.addAsResource( "SRC /メイン/リソース"、 "/リソース")のようなものを試してみました; '? –

+0

はい。問題は、 'addAsResource()'の中の開始パスがすでに 'src/test/resources'の中にあることです。 –

答えて

0

src/test/resourcesにないファイルを追加する場合は、addAsResource(String, String)ではなく、オーバーロードされたバージョンaddAsResource(File, String)を使用するだけです。あなたの例では、次のようになります:

.addAsResource(new File("src/main/resources/test-persistence.xml"),"META-INF/persistence.xml"); 

私はちょうど私のコードで同様の問題を解決したので、このアプローチは間違いなく動作します。

0

サブツリーを含めるには、以下を使用します。

あなたはdb/migration/FILE_NAME

Path resources_dir = Paths.get("src", "main", "resources"); 
Path migrations_dir = resources_dir.resolve(Paths.get("db", "migration")); 
Files.walk(migrations_dir) 
    .forEach((p) -> jar.addAsResource(p.toFile(), 
            resources_dir.relativize(p).toString())); 

としてsrc/main/resources/db/migration下のすべてのファイルが

関連する問題