2017-03-12 18 views
0

私はArquillianを学んでおり、問題があります。Arquillian + mvn cleanパッケージの代わりにmvn cleanパッケージ-DskipTestsとmvn test

私のテストは、最初にmvn clean package -DskipTestsで戦争を生成してからmvn testコマンドでテストを実行する場合にのみ機能します。

私はmvn clean packageを実行すると、私は例外を取得し、私のテストは実行されません。

java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.spec.WebArchive a.b.c.HelloBeanTest.createDeployment() 
    at a.b.c.HelloBeanTest.createDeployment(HelloBeanTest.java:32) 

私が最初に最終成果物を生成せずに、直接私のテストを実行することができればそれは素晴らしいことです。

これは私のテストクラスである:

@RunWith(Arquillian.class) 
public class HelloBeanTest { 
    @EJB 
    private HelloBean bean; 

    @Deployment 
    public static WebArchive createDeployment() { 
     WebArchive war = ShrinkWrap.createFromZipFile(
       WebArchive.class, new File("target/arquillian-demo-web-1.0.war") 
     ); 

     System.out.println(war.toString(true)); 
     return war; 
    } 

    @Test 
    public void testSay() throws Exception { 
     assertNotNull(bean); 
     System.out.println(bean.say()); 
     System.out.println("- end -"); 
    } 

} 

私はwollowingを試みたが、それは私のために動作しません:

war = ShrinkWrap.create(MavenImporter.class).loadPomFromFile("pom.xml").importBuildOutput().as(WebArchive.class); 

答えて

0

Arquillianは、あなたが欲しいものを行うには良い方法を提供します。ベストプラクティスは、ShrinkWrap mavenインポーターを使用して、mavenではなくアプリケーションをビルドしてパッケージ化することです。

しかし、それを実行する前に、アプリケーション全体(統合テストまたはシステムテスト)を実際にテストするか、アプリケーションのより小さい部品またはより大きなコンポーネントを単体テストするかを2回考えてください。ベストプラクティスは、テストを実行するために必要なアプリケーション全体の最小サブセットのみを常にパッケージ化することです(テストが何をテストしているかを理解するのが簡単で、実行も簡単です)。あなたが本当に単一のテストケースでアプリケーション全体をテストする場合

、その後、私は上記のShrinkWrap maven importerは役立つはず:

WebArchive war = ShrinkWrap.create(MavenImporter.class) 
    .loadPomFromFile("pom.xml").importBuildOutput().as(WebArchive.class); 
関連する問題