2009-08-10 6 views
3

MVVM의 단위 테스트보기 모델에 대한 기사와 테스트 자체가 viewModel 및 모델의 기능을 테스트하고 뷰 모델의 소비자 인 방법을 살펴 보았습니다. 그러나 뷰 (UI)를 테스트하여 뷰 모델에 제대로 연결되는지 확인하는 방법에 대해 궁금하게 생각합니다. 예를 들어, 버튼을 눌러서 DB에 쓰여 있는지 확인하는 테스트를 작성하고 싶지 않습니다. 이미 VM을 테스트하고 있습니다.MVVM에서 뷰를 올바르게 테스트하려면 어떻게합니까?

예를 들어, 버튼이 특정 명령에 연결되어 있는지 확인하기위한 테스트를 작성하고 싶습니다. 그러므로 누군가가 따라 와서 버튼의 명령을 제거하지 못하게하여 더 이상 작동하지 않게합니다.

이것이 가능합니까? 감사.

+0

다음과 같은 방법으로 UI 로직을 나머지 응용 프로그램과 정확하게 구분한다면 MVVM, MVP, MVC 또는 비슷한 패턴 나는 항상 일반적인 수용 테스트 이외에 UI를 테스트하는 것이 중요하지 않다고 생각했습니다. –

+0

Chris, UI 테스트없이 어떻게하면 모든 변경 사항이 기존 기능을 망칠 수 있는지 확인할 수 있습니다. 버튼에 명령을 제거하여 더 이상 저장하지 못하게합니다. – HAdes

+0

어쨌든 UI를 테스트 할 것입니다. 시각적 및 미학적 결함이 있습니까? 그렇게하면 잘못 판단하고 잘못된 답을 찾을 수 있습니다. 내 주장은 UI가 휘발성이 있고, 필드가 이동되고 추가되며, 표시 형식이 변경된다는 것입니다. 테스트를 자동화하는 것은 정말 어렵습니다. 테스트를 유지하는 것은 더욱 어렵습니다. 때때로 우리는 탄환과 수동 회귀 테스트를 물을 필요가 있습니다. – djna

답변

0

원시 UI를 자동화하는 데 도움이되는 Telerik (테스트 아트)에서 뭔가가 있다고 생각합니다. http://www.artoftest.com/products/webaii.aspx 지금은 WPF가 아닌 Silverlight입니다. 바라기를 그것의 좋은 출발점 적어도.

+0

괜찮아 보이지만 내 질문에 답하지 않습니다. 저는 바인딩, 명령 등과 같은 것들을 테스트하는 방식을 따랐습니다. UI 나 테스트 결과를 확인하는 것만으로는 충분하지 않습니다. VM이나 모델을 테스트하는 데 관심이 없기 때문에 뷰 자체만으로는 충분하지 않습니다. VM이나 모델은 앞으로 변경 될 수 있지만 뷰 테스트를 변경하지 않아도됩니다. – HAdes

+0

네, 충분히 좋은 질문입니다. 저는 지금까지 그 비트를 편리하게 무시하고있었습니다. ASIDE : 원하는 작업량에 따라 파서/유효성 검사기를 작성하여 모델의 모든 항목이 뷰에 다시 표시되도록 할 수 있습니다. 아니 어쩌면 당신의 어쩌면 찾고 있지만 좋은 유효성 검사가 될 것입니다. –

+0

GUI 테스트를 위해 흰색을 사용해 볼 수 있습니다. http://www.codeplex.com/white –

2

누군가 (희망적으로 디자이너가) ButtonMenuItem으로 변경하려면 어떻게해야합니까? 테스트가 중단되어 문제를 해결해야합니다. MVVM의 가장 큰 장점 중 하나는 개발자가 개발자와 너무 많은 앞뒤로 요구하지 않고도 인터페이스를 정렬하고 다시 정렬 할 수 있다는 것입니다. UI에 대한 단위 테스트를 작성하면 이익이 사라집니다.

나는 여기 악마를지지하는 사람이다. UI 테스트가 완전히 쓸모없고 다른 사람의 코드 기반에 결코 자리를 잡지 못한다고 말하는 것은 아닙니다. 제가 말하고자하는 것은 반환이 줄어들고, 다른 문제를 하나의 문제로 교환 할 수 있다는 것입니다.

실제로 "격리"에서보기를 테스트하는 방법은 다음과 같습니다. . . 내가 생각하기에 가장 쉬운 방법은 주입 된 모의 서비스와 함께 뷰 모델을 사용하는 것입니다. 뷰 모델은 서비스 로케이터를 사용하여 종속 서비스를 가져와 단위 테스트에서 더미 서비스를 주입 할 수 있습니다. 그런 다음 명명 된 요소 참조, 시각적 트리 크롤링 및 WPF UI 자동화 API를 조합하여 다양한 시각적 요소에 예상대로 속성이 설정되어 있다고 주장 할 수 있습니다.

0

나는 이전 게시물 인 것을 알고 있지만, 현재 동일한 문제가 있습니다. (또한, 누군가가 뷰 테스트에서 쓸모가 없다는 말을 듣기 전에, 일부는 표준 및 관행의 일부로해야합니다. 의료 기기 업계에서 우리와 마찬가지로). 서비스를 등록하고 테스트 코드에서 액세스 할 수 있도록 사용자 정의 인터페이스를 사용하여 도움이 될 수있는이 기사를 발견했습니다. 나는이 기사를 더 잘 읽으려고 노력하고있다. 비록 이것이 더 명확한 대답을 얻는 데 최소한의 보좌관이되기를 바랄 지 모르지만 : http://blog.zuehlke.com/en/mvvm-and-unit-testing/

+0

답변에 기사의 요점을 요약해야합니다. 링크 전용 답변은 낮은 품질로 간주됩니다. 무엇보다도 링크가 죽기 쉽기 때문입니다. –

관련 문제