2014-09-03 2 views
0

통합 테스트에 Arquillian을 사용하려고하는 프로젝트를 진행 중입니다. 우리 프로젝트는 Spring 4, Hibernate를 사용하고 있으며 Arquillian과 통합하려고합니다. 이 링크에서 Arquillium Spring Extension 사용법을 설명하는 적절한 샘플 프로젝트를 찾을 수 없었습니다. https://github.com/arquillian/arquillian-showcase/tree/master/spring 대부분의 예제에는 JAR을 작성하여 비즈니스 로직을 테스트하는 것이 포함되어 있습니다. 이 링크 https://github.com/arquillian/arquillian-extension-spring 웹 응용 프로그램을 테스트하는 데 Arquillian Spring Extension을 사용하는 방법을 찾았지만 예제는 없습니다.Wildfly Spring Arquillian - 예외없이 배포 및 배포 취소되는 WAR

그래서 여기에 내가하려고하는 것이 있습니다. 프로젝트 용으로 생성 된 웹 아카이브가 있으며 문제없이 또는 오류없이 Wildfly에 성공적으로 배포되고 있으며 우리 웹 페이지에 액세스 할 수 있습니다.

프로젝트에 arquillian 구성을 추가했습니다. 처음 엔 엔티티 관리자를 주입하고 DAO 액세스 레이어 테스트를 수행 할 계획입니다. 하지만 우리는 WAR를 완벽하게 배치 할 수 있다고 생각했기 때문에 DAO 계층이 아닌 전체 테스트를 위해 설정 아키 켈을 사용할 수 있습니다. 그래서 우리는 같은 것을 구성하기로 결정했습니다.

이제는 전체 WAR를 다시 만들지 않고 구성 파일에서 변경하지 않고 기존 WAR를 사용합니다. (나는 persistence-ds가 변경되고 그에 따라 사용되어야하지만 나중에 maven을 사용하여 수행 될 수 있음을 안다.) 그래서 현재 내 config 파일들 (applicationContext, beans.xml, hibernate.xml, web.xml, mappings.xml ... 등등)은 모두 DEV 환경에서 사용 된 것들과 같습니다.

사람은 그냥 엔티티 관리자와 DAO 층

다음 옵션 I가 시도 할 수 있습니다를 주입하기 위해 노력하고있는 유 시간 동안, 많은 테스트 로직을 볼 수 없습니다 테스트 케이스에 또한 현재, 여기 나 좀 도와 주실 래요 , 전쟁을 직접적으로 사용하지 말고, 패키지와 의존성을 추가하여 ShrinkWrap을 사용하여 전쟁을 생성하는 등등 .... 이것이 정말로 필요한지 나는 알 수 없다. 다른 옵션으로 뷰에서 로직 코드를 분리하고 JAR을 생성 한 다음 @SpringConfiguration을 사용하여 작동하는지 확인합니다. 또는 Spring Extension을 삭제하고 일반 CDI를 사용하여 작동하는지 확인하십시오. 그러나 Spring MVC 테스트를 수행 할 때이 문제를 해결해야 할 수도 있습니다. 처음 내가 Arquillian 서블릿 러너를 가져 오는 데 사용

누군가가 발견되지 도움이된다면 그래서 여기

+0

2의 pom.xml https://gist.github.com/shrikanthavale/8cd19f2a6c3be8cc44be 3 테스트 케이스 https://gist.github.com/shrikanthavale/b72e8c8348354db4d0c3 –

+0

1 . 오류, (Maven -X), WebArchive 구조의 sysout - https://gist.github.com/shrikanthavale/ad4cc4015c53c98b64a2 구성 파일 - Web.xml, ApplicationContext.xml, hibernate, xml, beans.xml, faces-config , mvc-dispatcherservlet, mappings.xml https://gist.github.com/shrikanthavale/273890d1cf844f28adc9 –

+0

Ar의 문제를 해결할 수있었습니다. quillianServletRunner, web.xml을 3.0에서 2.5로 수정하여 배포 및 서버 로그가 깨끗하지만 여전히 주입이 없음 –

답변

0

이 , 내가 직면 자세한 답변 및 문제점이다 나는 문제가 서블릿 3.0에서 web.xml을

에 깨달았다 web.xml에는 metadata-complete = "true"기능이 있습니다. 이제이 기능을 사용하면 서버 시작 시간이 향상됩니다 (Wildfly의 경우).하지만 Arquillian에서 수행하는 작업은 ArquillianServletRunner이며 서블릿은 감지되지 않습니다.

그리고 나는 정확히 개발을 위해 사용하고있는 WAR와 똑같습니다. 그러므로 문제입니다.

내가 할 일은 metadata-complete = false로 중복 된 web.xml을 만들고 src/test/resources에 넣고 개발 전쟁을 업데이트하고 arquillian에 사용하는 것입니다.

두 번째 문제는 내 측면에서 실수였습니다. 우리는 Spring 컨테이너를 사용하면서 서버의 standalone.xml에서 Weld 하위 시스템을 제거했습니다.

하지만 용접 컨테이너를 다시 추가하면 콩에 @Inject 주석이 주입되기 시작합니다.

하지만 테스트 환경이 개발 환경과 동일하기를 바래서 올바른 arquillian 스프링 의존성을 추가하고 용접 컨테이너를 제거하고 여전히 작동하고있었습니다.

그래서 여기 내 업데이트 pom.xml과 arquillian.xml이 있습니다.

https://gist.github.com/shrikanthavale/ec96736e32df8b6985bb https://gist.github.com/shrikanthavale/8cd19f2a6c3be8cc44be