2016-06-29 14 views
0

jboss eap 6 (AS7)으로 마이그레이션 할 솔기 2.2.2 응용 프로그램이 있습니다. 테스트가 오래된 jboss 임베디드 컨테이너에 있었기 때문에 arquillian을 사용하기 시작했지만 배포 패키지를 작성하는 데 열중하지 않았습니다.arquillian + shrinkwrap + seam : 배포 패키지를 만드는 방법

이 내 시도 중 하나입니다

@Deployment 
@OverProtocol("Servlet 3.0") 
public static Archive<?> createDeployment() throws IOException { 

    // Build the ear with Maven by hand before run the test! 
    final EnterpriseArchive ear = ShrinkWrap.createFromZipFile(
      EnterpriseArchive.class, new File("../Sin-ear/target/Sin.ear")); 

    final JavaArchive testjar = ShrinkWrap.createFromZipFile(
      JavaArchive.class, new File("./target/test.jar")); 
    //final JavaArchive testjar = ShrinkWrap.create(JavaArchive.class, "test.jar") //other attempt 
    //  .addPackages(true, "com.miles.knowledge.test"); 

    ear.addAsModule(testjar); 
    return ear; 
} 

내가 JUnit 테스트로 테스트 클래스를 실행할 때 실패 (I없이 오류가있는 aplication 배포를 볼 수 있습니다) :

java.lang.ClassNotFoundException: com.miles.knowledge.test.GreeterTest from [Module "deployment.Sin.ear.Sin.war:main" from Service Module Loader] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) 
    ... 

이 테스트 패키지를 전쟁 패키지에 패키지로 만들어야하는 것 같지만 잃어 버렸습니다. 도움이 필요합니다.

답변

1

배포 이런 종류의 (주 전쟁에 테스트 클래스를 추가) 작업을해야 ...

@RunWith(Arquillian.class) 
public class JsfTest extends org.jboss.seam.mock.JUnitSeamTest{ 

    @Deployment(name="UserLoginTest") 
    @OverProtocol("Servlet 3.0") 
    public static Archive<?> createDeployment(){ 

     EnterpriseArchive er = Deployments.webAppDeployment(); 
     WebArchive web = er.getAsType(WebArchive.class, "WebApp-web.war"); 
     er.addAsModule(Testable.archiveToTest(web)); 

     web.addClasses(JsfTest.class) 
      .addAsResource(EmptyAsset.INSTANCE, "seam.properties") 
      .delete("/WEB-INF/web.xml"); 
     web.addAsWebInfResource("mock-web.xml", "web.xml"); 

     return er; 

    } 
} 

public class Deployments { 
    public static EnterpriseArchive webAppDeployment() { 
     return ShrinkWrap.create(ZipImporter.class, "WebApp.ear") 
      .importFrom(new File("../WebApp-ear/target/WebApp.ear")) 
      .as(EnterpriseArchive.class); 
    } 
} 
+0

그것의 그! 고마워, 친구! 올바른 cacheManager 구성을로드하는 방법을 알기 위해 시간이 좀 걸렸지 만 팁이 옳았다. –