2011-11-16 5 views
5

여기에서 진행하는 방법에 대한 조언을 찾고 있습니다.통합 테스트 테스트 데이터베이스가있는 연결된 WCF 서비스

다른 wcf 서비스를 호출하는 wcf 서비스에 대한 일부 통합 테스트를 수행하려고합니다. 서로 올바르게 구성되었는지 확인하고 싶습니다. 우리는 현재 spring.net과 Nhibernate를 사용하고 있습니다. 내가 확실하지 않은 점은 실제로 데이터베이스에 아무것도 저장하지 않고 데이터베이스가 업데이트되고 있는지 확인하는 방법입니다.

여기에 테스트하려는 msmq 및 wshttp 서비스가 있습니다. 우리는 봄에 사용하는 트랜잭션에 익숙하지만 통합 테스트에서 직접 테스트하지 않는 서비스에서 트랜잭션을 롤백하도록 테스트를 설정하는 방법을 알지 못합니다.

현재 유일한 옵션은 테스트 데이터베이스와 테스트 데이터를 사용하는 것입니다.하지만 이보다 더 좋은 해결책이있는 것 같습니다.

+3

** 테스트 ** 데이터베이스 대신 ** 프로덕션 ** 데이터베이스에서 소프트웨어를 ** 테스트 **하는 것이 바람직한 이유는 무엇입니까? – CodeCaster

+0

아마 나를 잘못 읽었나요? 지금까지 내가 가진 유일한 옵션은 테스트 데이터베이스와 테스트 데이터를 만드는 것이다. –

+1

동일한 데이터베이스를 사용하고 동일한 'SessionFactory'를 공유하도록 모든 서비스를 설정할 수 있습니까? – Marijn

답변

0

응용 프로그램과 관련된 구현으로 결정했습니다. 기본적으로 테스트 데이터베이스를 만들고 응용 프로그램에 전달 된 일부 값을 기반으로 테스트 데이터베이스를 테스트합니다.

0

아마도 Moq과 같은 것을 사용하여 데이터베이스 (또는 DAL 계층)를 업데이트하는 서비스를 조롱하고 데이터베이스 호출을 피하고 데이터베이스 호출을 수행하는 mock의 verify 메소드로 확인하십시오. 우리 프로젝트에서 우리는 wcf와 함께이 라이브러리를 아주 좋은 결과와 함께 사용하고 있습니다.

+0

서비스가 제대로 연결되어 있는지 테스트하려는 경우이 방법을 사용하는 것이 좋습니다. 그러나이 방법은 적절한 sql이 데이터베이스로 전송되었는지 실제로 확인하지는 않습니다. 그리고 이것이 이것이 OP의 목표라고 생각합니다. – Marijn

+0

아마도 wcf 서비스 대신 데이터 액세스 레이어를 조롱하는 것이 트릭을 수행합니다. 이것이 어떻게 구현되는지 모르지만, 만약 그러한 계층이 존재한다면 적절한 SQL이 실행되지 않고 실행되는지를 쉽게 알 수 있습니다. – Diego

+0

예, 인터페이스를 테스트 할 때이 작업을 수행합니다. 그러나 간접적으로 호출되는 서비스에 대해 임의의 조롱을 수행 할 방법은 없습니다. –

관련 문제