2012-09-19 4 views
1

나는 양파 건축술에 근거를 둔 건축술이있다. 시스템을 테스트하는 유닛에 대해 궁금합니다. 이것이 시스템이 흐르는 방법입니다.단위 테스트 양파

MVC -> Services -> Repositories -> NHibernate -> Database 

테스트에 대한 제 생각입니다. 내 저장소를 테스트 할 수있는 방법을 설정하고 싶습니다. SQLite 또는 SQL Express를 사용합니다. 단위 테스트는 전체 저장소를 테스트합니다. 따라서 UserRepository가 주어지면 모든 메소드 (Get, Save, Count 등)를 테스트합니다. 이 테스트는 내 맵핑과 엔티티도 테스트해야합니다.

다음으로 서비스를 테스트하고 싶습니다. 이 테스트에서는 Moq을 사용하여 내 리포지토리를 조롱했습니다. 그러면 내 서비스에 전화하는 테스트를 할 것입니다. 저장소가 사용될 때마다 Moq 구현을 사용합니다. 다른 중요한 코드는 외부 웹 서비스 호출, 전자 메일 보내기 등과 같이 스터브되어야 할 것입니다.

내가 테스트하고 싶은 마지막 부분은 내 웹 측면입니다. 내가 조롱 한 서비스와 대화하는 테스트 컨트롤러를 작성하여 시작할 것입니다. 앞으로 어떤 시점에서 Selenium을 사용하여 UI를 테스트 할 것을 고려할 것입니다.

내 아키텍처가 인터페이스 접근법을 사용하여 테스트를 위해 배선되어 있다고 생각하면이 방법이 단위 테스트의 표준 방법처럼 보입니까? 또한, IoC (Ninject)로 테스트 할 때 어떤 생각을 할 수 있습니까? 어떤 생각이나 충고도 매우 감사 할 것입니다.

+0

귀하의 질문에 다소 모호하게 보입니다. 특히 두 번째 질문 인 "IoC로 테스트 할 때 어떤 생각을하면 어떨까요?" – Gilles

+1

프로그래머가 조여주고 "약간의 생각"이나 "어떤 생각"을 묻지 않는다면 문제는 * 괜찮을 수도 있습니다. 더 구체적인 질문을하십시오. – ChrisF

답변

0

그럴듯하고 괜찮습니다. sqlite 또는 sql express를 사용하는 경우 라이브 시스템에서 사용하는 것과 동일한 데이터베이스를 사용하는 것이 좋습니다. 이것은 우리의 통합 테스트의 일부입니다. 우리는 nhibernate가 SQL Server 2005의 일부 버전에서 작동하지만 SQL Server 2008에서는 작동하지 않는 일부 이상한 쿼리를 생성 한 사소한 결함이있었습니다. 따라서 저장소 테스트는 단위 테스트 (및 스텁 세션) 및 통합 테스트로 구성 될 수 있습니다.