2017-03-12 5 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 메이븐 가져 오기 도구를 사용하여 메이븐 대신 응용 프로그램을 빌드하고 패키지하는 것입니다.

하지만 그렇게하기 전에 통합 또는 시스템 테스트에서 전체 응용 프로그램을 실제로 테스트 할 것인지 또는 응용 프로그램의 더 작은 부분 또는 더 큰 구성 요소를 단위 테스트 할 것인지 두 번 생각하십시오. 가장 좋은 방법은 테스트를 실행하는 데 필요한 전체 응용 프로그램 중 가장 작은 하위 집합 만 패키지하는 것입니다. 테스트를 수행하는 데 필요한 내용을 이해하기 쉽고 빠릅니다. 당신이 정말로 하나의 테스트 케이스의 전체 응용 프로그램을 테스트하려면

, 그럼 내가 위에서 언급 한 ShrinkWrap maven importer는 데 도움이 될 것입니다

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