2
내가 "클라이언트 모드 활성화"의 단락에서 Arquillian의 웹 사이트 http://arquillian.org/guides/functional_testing_using_drone/

Arquillian 및 셀레늄 모드

에 자습서를 읽고있다

그들은에서의 컨테이너 및 클라이언트 모드를 혼합 할 수 있음을 명시 같은 시험! 시험 할 수있는 속성을 그냥 둡니다. @RunAsClient로 주석 처리 된 모든 메소드는 클라이언트에서 실행되고, 나머지는 컨테이너 내부에서 실행되어 사용자에게 두 가지 장점을 모두 제공합니다!

여기가 내 문제입니다. 나는 테스트를 작성하려는 사용자

@Drone 
DefaultSelenium browser and 

@EJB 
MyXXXRepository 

난 내가 해당 사용자와 브라우저에 로그인 할 셀레늄 테스트를하기 전에 InMemory 데이터베이스에 사용자를 추가 할 하나 개의 테스트를 ...이

그래서 셀레늄을 작동 시키려면 @Deployment를 testable = false로 설정해야합니다. 그러면 @EJB가 실패하게됩니다. 그럼 셀레늄 테스트 메소드가 클라이언트 모드에서 실행되어야한다고 말할 경우, 문서에 따르면 나는 testable = false를 건너 뛸 수 있습니다. 문서에 따르면 이것이 작동해야합니다. 하지만 !!! 이 예외를

Caused by: java.lang.NoClassDefFoundError: Lcom/thoughtworks/selenium/DefaultSelenium; 

가 발생합니다 그래서 나는

모든 응시자 ...뿐만 아니라 클라이언트 모드에있을

@Drone 
DefaultSelenium browser; 

을 말할 수 있어야합니다?

답변

0

테스트 전에 사용자를 가져올 가져 오기 스크립트를 사용하여 문제를 해결했습니다. 이렇게하면 저장소를 인스턴스화 할 필요가 없으며 클린 클라이언트 측 테스트가됩니다.

0

Drone은 클라이언트 측을위한 것입니다. 개인적으로 WebDriver/Drone 테스트를 배포하고 서버에서 실행하려고 시도한 적이 없습니다. 이것은 조금 미친 듯하다. :) 테스트 자체가 혼합 클래스 로더가 Drone 관련 수입품에 대해 불평하기 때문에 분명히 :).

하지만 "회색 상자"관점에서 테스트 할 수있는 솔루션이 있습니다. Warp라는 Arquillian 우주에는 매우 새로운 확장이 있습니다.이 확장을 통해 여러분은 여러분의 바로 그 문제를 해결할 수 있습니다. 여기에 the guide이 있습니다.

희망이 있습니다.