2013-01-24 4 views
4

MVVM 패턴이있는 WPF 프로젝트에서 처음으로 specflow를 시도하고 있습니다. 그래서 저장소, 컨트롤러, 뷰 및 뷰 모델이 있습니다. 리포지토리는 데이터베이스를 공격하고 데이터를 돌려주는 웹 서비스에 대한 호출을 만듭니다. View 모델에는 사용자의 입력을 검증하고 저장소 메소드를 호출하는 메소드가 있습니다.MVVM에서 WPF에 대한 specflow 사용

필자는 specflow에서 저장소 메소드를 포함하여 완전한 호출을해야합니까? 아니면 Moq을 사용하여 해당 메소드를 조롱해야합니까? 그것은 의미가 있습니까?

답변

4

짧은 대답 : 당신은 당신이 호출이 데이터베이스를 공격 할 수 있지만, 당신은 당신의 DB에 논리가 없다면 내가 그들을 조롱 추천 할 것입니다

긴 대답 : 이 경쟁하는 방법있다 이 질문을 보는 것. 첫째, SpecFlow를 사용할 것으로 기대되는 테스트 유형은 무엇입니까? 둘째, 데이터베이스에 액세스하는 것이 얼마나 쉬운 지 테스트하는 것입니다.

당신은 당신이 정말 예를 스타일에 의해 사양에 단위 테스트을하고, 당신의 낮은 수준의 기술 요구 사항을 테스트하는 SpecFlow를 사용하는 경우. 따라서 이것은 조롱을 사용하여 유닛을 격리 시키도록 지시해야합니다. (개인적으로 나는이 테스트를 위해 NUnit과를 사용하여 다루고 싶어요.)

을 당신이 당신의 비즈니스 시나리오를 테스트하는 SpecFlow를 사용하지만 경우 (예 : 수용 테스트) 다음 시나리오 기능을 제공하기 위해 하나 개 이상의 장치에 의존하고 . 이것은 통합 또는 시스템 테스트와 같으며 많은 시스템 구성 요소가 관련되어 있어야하고 이론적으로는 전체 시스템을 테스트 할 때 DB를 포함해야합니다. 특히 원하는 저장 프로 시저 또는 뷰가 하나 인 경우에는 DB를 포함해야합니다. 나중에 회귀 테스트에.

그러나이 두 번째 방법은 데이터베이스를 테스트에 사용할 수있게하려면 얼마나 많은 고통이 필요합니까?

  • 개발 팀에 하나 이상의 사람이 있다면, 어떤 전략을 당신은 당신이 동시에 테스트를 실행하면 실패하지 않도록해야?
    • 예를 들어 각 실행마다 새로운 고유 고객을 생성하고 해당 고객에 대한 업데이트 및 쿼리에만 액세스하면 잘못된 주문 수로 끝나지 않을 수 있습니다.
  • 테스트를 실행 한 후 어떻게 데이터베이스를 재설정 하시겠습니까?
    • 예. 올바른 종류의 데이터베이스를 사용한다면 비어있는 .mdb를 소스 컨트롤로 체크하고 롤백/되돌리기 만 할 수 있습니다.

나는 개인적으로 procs 저장 및보기없이 간단한 DB에 대한 조롱이 더 나은,하지만 곧 당신이 DB에 비즈니스 로직을 추가 한대로, 음, 당신이를 테스트 할 필요가 있음을 발견했습니다 어떻게 든 논리.

+1

이 시나리오에서는 유닛 테스트와 기능 테스트 모두 specflow를 사용했습니다. 단위 테스트의 경우 specflow는 Given 문에서 테스트 케이스에 대한 MOCK 데이터를 정의하고 설정 한 다음 테스트를 실행합니다. 기능 테스트의 경우 Given 문은 사용자 입력을 더 정의하고 매일 밤 배포되는 별도의 기능 테스트 데이터베이스를 설정하여 specflow 기능 테스트를 자동화 된 방식으로 실행할 수 있습니다. – Keith

관련 문제