2009-06-25 5 views
9

나는 아주 복잡한 자바 웹 서비스를 모의해야하며 올바른 해결책을 찾고 있습니다. 한 가지 방법은 Soap UI를 사용하는 것이지만 서버 상태를 수정할 수있는 무언가가 필요합니다. 하나의 요청은 향후 요청에 영향을 미칩니다.가장 좋은 방법은 자바 웹 서비스를 모방합니다

이 경우에는 직렬화 된 객체를 디스크에 저장하고 원 클라이언트 웹 서비스에 비동기 응답을 생성하여 신속하게 처리 할 수 ​​있습니다.

이러한 두 가지 요구 사항으로 인해 SoapUI를 사용하지 못하게되었습니다. 그루비 논리는 꽤 복잡해지기 쉽지 않을 것입니다.

내 질문 :

1) 다른 SoapUI 장점은 사용자 정의 자바를 통해 WSDL의 새 버전 (예를 들어 쉽게 마이그레이션)이 문맥에서 모의 ​​구현이 있습니까.?

2) wsdl에서 webservice를 생성하는 데 가장 적합한 방법은 무엇이며 몇 가지 맞춤 기능 (예 : 별도의 파일에서 편집 할 수있는 몇 가지 후크를 첨부하여 (업데이트 된 wsdl에서 ws 코드를 다시 생성 할 수 있도록)?

+0

모의는 테스트 목적 일뿐만 아니라 클라이언트 부분을 그대로 남겨 두어야한다는 점에 유의해야합니다. 정상적인 http 통신이 있어야하며, 엔드 포인트 만 변경됩니다. 그래서 나는 조롱 프레임 워크가이 경우에하지 않을 것으로 생각합니다. – aaimnr

+0

통합 테스트에 대해 이야기하고 있다면 제작 환경을 최대한 가깝게 미러링하려고 시도하고 UAT/QA 데이터베이스에 대한 실제 웹 서비스를 사용하게 될 것입니다. 웹 서비스가 귀하의 통제하에 있지 않으면 테스트 중에 사용하는 '테스트'데이터를 작성하십시오.IMHO는 웹 서비스의 '모의 (mock)'/ 스터브 (stub)를 만들면 웹 서비스가 어떻게 동작 할 것인가를 가정 한 '모의 (mock)/스텁'을 기반으로 보안에 대한 잘못된 인식을 갖게됩니다. 이것은 유닛 테스트에서는 괜찮지 만 완전한 통합 테스트를 위해서는 실제 테스트가 제대로 작동하는지 확인해야합니다. –

+0

실제로 통합 테스트가 아니라 교육 용도로 사용하는 것이 좋습니다. 프론트 엔드가 사용하는 웹 서비스는 대용량의 중요한 데이터를 미러링하기가 어렵 기 때문에 가벼운 모의 객체를 만드는 것이 더 쉽지만 상태를 유지할만큼 지능적이어서 논리적 인 교육 시나리오의 가능성을 제공합니다. – aaimnr

답변

2

단순한 mock의 경우 soapUI를 사용하고 상태가 요청 사이에서 변경되어야하는 경우 더 복잡한 반면 Python으로 작성된 간단한 웹 서비스 에뮬레이터를 사용합니다. 이러한 에뮬레이터는 실제 웹 서비스에서 작성한 응답 템플릿 또는 soapUI에서 작성한 응답을 사용합니다. 이 방법으로 모든 논리를 제어 할 수 있습니다.

마지막 프로젝트를위한 에뮬레이터는 300 개 이상의 파이썬 코드 라인을 가지고 있지만 이전에는 훨씬 더 단순했다. 파이썬 코드는 150 행이었다.

+0

시원하게 들리지만 모두 사용할 수 있습니까? – Monachus

+0

soapUI는 무료입니다 (추가 지불 된 버전도 있습니다). 에뮬레이터에 사용하는 Python 스크립트는 지정된 서비스가 다양합니다. HTTP 서버를 사용하고 템플릿 및 일부 데이터베이스 값을 기반으로 응답을 채 웁니다. –

5

EasyMock을 보면 프로그래밍 방식으로 모의 빌드가 가능합니다. mock에 대해 매우 복잡한 동작을 지정할 수 있습니다.

3

아마도 클라이언트에서 생성 된 스텁을 사용하고 있습니까? 스텁을 조롱 API (JMock 또는 EasyMock) 중 하나와 조롱하고 조롱을 테스트중인 클래스에 삽입해야합니다.

서버 측에서는 호출을 처리하는 클래스를 테스트하여 해당 작업을 수행하는 데 사용할 수있는 모든 객체의 모의 객체를 주입합니다.

여러분은 모든 호출을 로컬 (프로세스 중) 단위 테스트에 유지하도록 노력해야합니다. 테스트 대상 클래스가 의존하는 모든 객체의 반환 값을 쉽게 제어 할 수 있으며 테스트 스위트가 커질 때 단위 테스트가 빌드 프로세스의 병목 현상이되지 않도록 도움을줍니다.

WSDL에서 Java 클래스 생성과 관련하여 Apache Axis에는 앞서 언급 한 클라이언트 스텁을 생성하는 WSDL2Java라는 것이 있습니다. 이러한 종류의 유틸리티는 웹 서비스 프레임 워크에서 일반적이지만 EJB3 웹 서비스가 도입 된 이후 대체되었습니다. javax.xml.rpc.ServiceFactory이 존재합니다.

여기 EJB3 웹 서비스 및 클라이언트에 대한 자습서가 있습니다 (http://www.theregister.co.uk/2007/01/23/ejb_web_services/).

관련 문제