문제

알겠습니다.

모든 사람들이 충분히 오랫동안 작업 해 왔기 때문에 이제 단위 테스트를 시작할 때가되었다고 생각합니다.NUnit을 설치하고 몇 가지 "단위 테스트 입문"유형 자습서를 살펴 봤습니다.

현재 웹 앱 중 하나를 다시 빌드하는 데 도움이되는 작은 프레임 워크를 모으고 있으므로 프레임 워크 용 VS2008 프로젝트를 만들었으며 진행하면서 단위 테스트를하고 싶습니다.

웹 컨트롤에 대한 단위 테스트는 어떻게해야합니까?메소드는 모두 보호되거나 비공개이며 프레임 워크이므로 WebControls 외에는 많지 않습니다.

포인터가 있습니까?

화상

도움이 되었습니까?

해결책

완전한 프레임 워크를 사용하지 않고도 모델-뷰-컨트롤러 또는 모델-뷰-프레젠터 유형 아키텍처를 수행 할 수 있습니다.단위 테스트 UI 구성 요소가 어렵다는 것을 이미 알고 있습니다.그 주위에 방법이 있지만 아마도 그 길을 가고 싶지 않을 것입니다.보통 이것은 당신의 테스트를 유지하기 매우 어렵게 만들고, 유지 보수의 악몽은 프로그래머가 없이도 할 수있는 일입니다.

'컨트롤러'또는 '프레젠터'클래스에서 테스트 할 기능을 분리 해보세요.그런 다음 해당 클래스를 테스트하십시오.더 테스트 가능하게하려면 인터페이스 뒤에 usercontrol 클래스 (보기)를 숨기고 컨트롤러 또는 발표자가 인터페이스를 통해보기와 대화하도록 할 수 있습니다.이렇게하면 테스트에서보기를 모의 할 수 있습니다.

이것은 많은 작업처럼 들리고 해결 방법처럼 보이지만 익숙해지면 UI 동작을 훨씬 쉽게 변경할 수있는 정말 멋진 아키텍처입니다.정말로 필요할 때 항상 "진짜"mvc 프레임 워크를 사용할 수 있습니다. :-)

다른 팁

assembly:InternalsVisibleTo 속성 및이러한 비공개 회원에 액세스 할 수 있습니다.

웹 컨트롤 프로젝트의 AssemblyInfo.cs ( Properties 노드 아래)에 저장 라코 디스

ASP.NET의 가장 큰 문제점을 발견했습니다.단위 테스트를 방해하는 봉인 된 비공개 클래스

이것은 TDD 사람들이 뷰 템플릿과 컨트롤러 로직과의 명확한 분리를 제공하기 때문에 MVC 프레임 워크 (ASP.NET MVC, Castle MonoRail)를 사용하는 주된 이유입니다.컨트롤러는 완벽하게 테스트 할 수 있습니다.

사용자가 WebAii .나는 그것이 작동하는 것을 보았고 꽤 멋지다.또한 자동화 된 빌드에 연결할 수 있다고 들었지만 아직 보지 못했습니다.

도움이 되길 바랍니다 ...

는 지금까지 오래된 기사입니다.,하지만 저는 2004 년에 asp.net WebControls에 대한 nunit 테스트를 작성하기 위해 NUnitASP를 사용했습니다.이 기사는 테스트에서 얻은 컨트롤의 세부 사항을 캡슐화하는 해당 "Tester"클래스를 만드는 개념을 사용하여 간단한 컨트롤을 테스트하는 자세한 예제를 제공합니다..테스터는 또한 컨트롤과 동일한 어셈블리에있을 수 있으므로 (유틸리티 함수, 상수 등) 일부를 공유 할 수 있습니다.

저는 오늘날까지도 매우 정교한 컨트롤을 테스트하기 위해이 기술을 사용했습니다 (다른 사람들은이 기술의 변형을 사용합니다).

도움이 되었기를 바랍니다.

위에 언급 된 MVC 프레임 워크는 컨트롤의 기능을 테스트하는 가장 좋은 방법입니다.그러나 작동 방식을 테스트하는 것은 약간 다릅니다.

이는 완전히 벗어 났지만 사용자 컨트롤이 일부 보호 된 메서드와 속성을 노출하여 유효성 검사 정보를 반환 한 다음 테스트 사용자 컨트롤이이를 상속하도록 할 수 있습니다.이 컨트롤은 필드를 채우고 버튼을 누르는 등의 작업을 수행 할 수 있습니다.다소 지저분하지만 작동 할 수 있습니다.

또한 Rhino Igloo 프레임 워크.WebForms를위한 손상된 MVC 프레임 워크입니다.

Ivonna Asp.Net 컨텍스트 내에서 WebControl을 격리하여 테스트 할 수 있습니다. session.GetControl ( "Path.ascx")를 호출하고 필요한 모든 속성이 있는지 확인하십시오.

다음과 같이 테스트합니다. 라코 디스

내 스텁은 다음과 같습니다. 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top