2008-08-29 10 views
5

외부 웹 서비스에 메시지를 보내는 응용 프로그램이 있습니다. 나는 MSBuildCruisecontrol.NET을 사용하여이 응용 프로그램을 빌드하고 배포합니다. CCNET이 앱을 빌드하고 배포 할 때 NUnit을 사용하여 일련의 테스트를 실행합니다. 이제 웹 서비스 통신을 테스트하고 싶습니다.웹 서비스 통신 테스트 자동화

제 아이디어는 빌드 프로세스의 일부로 웹 서비스를 생성하고 (외부 웹 서비스 WSDL을 기반으로) 빌드 서버 로컬 웹 서버에 배포해야한다는 것입니다. 모든 웹 서비스는 메시지를 받아서 파일 시스템에 저장하는 것이므로 일반 NUnit을 사용하여 확인할 수 있습니다. 또한 새 개발자가 빌드 스크립트를 실행하고 실행하여 타사 서비스에 대한 연결을 설정하는 데 시간을 낭비 할 필요가 없으므로 개발이 쉬워집니다.

기존 유틸리티가 있습니까? WSDL을 기반으로 쉽게 웹 서비스를 조롱합니까? 누구나 MSBuild를 사용하여 비슷한 것을했을 수 있습니까?

이 시나리오를 테스트하는 다른 방법은 입니까?

답변

3

나는 방금 http://www.soapui.org/을 조사하기 시작했으며 웹 서비스 테스트에 적합하다고 생각됩니다.

또한 웹 서비스에서 추상화 레이어를 추가 할 때마다 각 서비스 호출이 직접 웹 서비스 범위 외부의 테스트 가능한 메서드를 호출 할 것입니다. 방금 작업 한 더 큰 프로젝트로이 작업을 수행했으며, 테스트 가능성은 훌륭하게 작동합니다.

+0

저는 우리 웹 서비스를 기능적으로 테스트하고 성능을 테스트하는 데 soapui를 사용했습니다. –

1

일반적으로 이와 같은 항목을 테스트하는 가장 좋은 방법은 mock objects을 사용하는 것입니다.

직장에서 우리는 제품 TypeMock을 사용하여 웹 서비스 통신 및 기타 외부 종속성 같은 것을 테스트합니다. 비용이 들기 때문에 귀하의 필요에 맞지 않을 수도 있지만 환상적인 제품이라고 생각합니다. 개인적인 경험을 통해 NUnit 및 CCNet과 잘 통합되었음을 알려 드릴 수 있습니다.

기본적으로 "이 메서드/속성이 호출 될 때이 값을 반환 해 주시기 바랍니다."라는 간단한 구문이 있습니다. 네트워크 오류, 파일이 존재하지 않는 것, 물론 웹 서비스와 같은 것들을 테스트하는데 좋습니다.

1

NMock2을 살펴보십시오. 이것은 오픈 소스 조롱 (mocking) 제품이며 풍부하고 깊은 상호 작용을 지원하는 인터페이스를위한 "가상"구현을 생성 할 수있게 해줍니다. 말

var testService = mockery.NewMock<IService>(); 
Expect 
    .Once 
    .On(testService) 
    .Method("GetService") 
    .WithNoArguments() 
    .Will(
     Return.Value(new Data()); 

: 당신의 WS 인터페이스가 IService라고하고 Data GetData() 방법이 있습니다 경우

예를 들어, 한 번 호출 할 방법을 필요로하고 새로운 Data 객체를 반환하는 모의를 만들 수 있습니다 테스트 을 호출하여 GetData 메서드가 실제로 호출되었는지 확인하십시오.

추신 : "NMock2"프로젝트와 "NMock RC2"(sourceforge에서 "nmock2"라고도 함)를 혼동하지 마십시오. NMock2-the-project는 NMock을 대신 한 것 같습니다.

1

이것은 또한 - MockingBird 일 수 있습니다. 유용하게 보입니다.

0

내 작업장에서는 단위 테스트를 위해 TypemocknUnit을 사용하고 있습니다.