2017-11-10 13 views
0

私はいくつかのITテストを実装しようとしています。私はArquillianを使用しています。私はシュリンクラップで戦争を構築することができ、すべてが例外的に機能するようです。Arquillian IT-Test Hibernateエンハンス

私の問題では、エンティティクラスはHibernateから拡張されていないため、テストは失敗します。

マイコード:

WebArchive war = ShrinkWrap.create(WebArchive.class) 
      .addPackages(true, "x.y.z.acme") 

がエラー:

Caused by: org.jboss.arquillian.test.spi.ArquillianProxyException: 
org.apache.openjpa.persistence.ArgumentException : The type "class 
x.y.z.acme.persistence.entity.AnEntity" has not been enhanced. 
[Proxied because : Original exception caused: class 
java.lang.ClassNotFoundException: 
org.apache.openjpa.persistence.ArgumentException] 

どのように私はこの問題を解決するだろうか? ITテストの2番目のプロジェクトを使用しないで好む

+0

あなたはHibernateを使用しているようです。私にはOpenJPAのようです。 –

+0

あなたは正しいです。 Hibernateはテスト戦争で正しく構成されていませんでした。ありがとう! – Tuxes3

答えて

0

私は解決策を自分で見つけました。 persistence.xmlをWebArchiveに追加することを忘れました。私の@Deploymentメソッドは次のようになります:

@Deployment 
public static WebArchive createJavaTestArchive() throws IOException { 
    WebArchive war = ShrinkWrap.create(WebArchive.class) 
     .addPackages(
       true, 
       "x.y.z.acme", 
       "javax.persistence" // Tomee does not contain JPA2.1 
     ) 
    ; 
    File beansXml = new File("src/main/resources/META-INF/beans.xml"); 
    war.addAsManifestResource(beansXml, "beans.xml"); 
    File persistenceXm = new File("src/test/resources/test-persistence.xml"); 
    war.addAsResource(persistenceXm, "META-INF/persistence.xml"); 
    war.addAsResource(new File("src/main/resources/import.sql")); 
    File[] libs = Maven.resolver().loadPomFromFile("pom.xml") 
      .importRuntimeDependencies().resolve().withTransitivity().asFile(); 
    war.addAsLibraries(libs); 
    System.out.print(war.toString(true)); 
    return war; 
} 
関連する問題