2011-05-02 4 views
0

저는 1 년 전에 시작된 프로젝트에서 새로 왔습니다.WPF - PRISM (CAL) - 자동화 된 기능 테스트

이 프로젝트는 C#, WPF, PRISM (CAL), Entity Framework, LINQ 등을 사용합니다. 응용 프로그램은 MVVM 패턴을 사용하여 수행됩니다.

일부 단위 테스트가 있지만 모든 구성 요소를 함께 사용할 때 대부분의 버그가 발견 되었기 때문에 기능 테스트를 요청 받았습니다.

MSTEST 프로젝트를 만들기 시작했습니다. 내 목표는 전체 애플리케이션 백엔드 (모델 및 뷰 모델)를 시작하고, UI 이벤트를 시뮬레이트하고, 또는 여러 뷰 모델 속성에 액세스하는 모델 수정을 확인하는 것이 었습니다.

첫 번째 게스트는 Entity 컨텍스트 (모델)를 만들고, 모든 PRISM 모듈을 초기화하고, 뷰 모델에서 이벤트 게시를 시작하여 모델을 수정하고 동일 또는 다른보기 모델에서 결과를 다시 확인했습니다. (MSTEST 아래는 System.Windows.Application.Current가 null 것으로 보인다 때문에) 간단한 응용 프로그램을 만듭니다

  • 재정의 프리즘 Boostrapper 클래스
  • : 내가했다. 방금 System.Windows.Application에서 수업을 파생했습니다.

UnityContainer를 사용하여 모든 인터페이스 구현에 액세스 할 수 있습니다. 내가 지금 가지고있는 문제는 IEventAggregator이 작동하지 않는다는 것입니다. 이벤트는 시작되지 않습니다. 프리즘 모듈 사이에서 이벤트를 발생시키고 싶기 때문에 이벤트 집계기를 모의하고 싶지는 않습니다 (저는 단위 테스트가 아닌 기능 테스트를하고 있습니다).

DispatcherDispatcherFrame으로 게임을 진행하는 방법을 찾았지만 실패한 것으로 보이는 RegionManager의 재고가 있습니다.

제 질문은 : 사용자 인터페이스를 반드시 표시하지 않고 기능/통합 테스트를 수행하는 더 좋은 방법이 있습니까?

답변

0

기능 테스트를 수행하는 경우 사용자 인터페이스를 표시해야합니다. 예를 들어 일부 사용자가 확인란을 선택하여 텍스트 상자를 놓고 더 이상 확인란을 클릭 할 수 없으면 기능 테스트에서이 확인란을 선택해야합니다.

Visual Studio에서 UI 테스트를 코딩 했으므로 WPF에서 몇 가지 문제가 발생합니다. 주로 코드화 된 UI 매핑에서 easly 도달 할 수없는 컨트롤입니다. 그러나 Tapp Build Agents 및 MSBuild와 잘 통합되고 테스트를 쉽게 수행 할 수 있습니다.

+1

내 응용 프로그램은 MVVM 및 PRISM을 사용하여 작성됩니다. MVVM은 ViewModel에서 로직이 모두 나타나고 View가 아니라는 것을 알려줌으로써 View를 표시하지 않고 자동화 된 기능 테스트를 쉽게 수행 할 수 있습니다 (ViewModel에서 작업을 수행하는 것만으로). PRISM을 사용하면 (나에 따르면) 불가능하게 만들 수 없습니다! – Nicolas

관련 문제