2012-04-24 3 views
0

ASP.net 응용 프로그램에 대한 단위 테스트를 수행해야합니다. 나는 결코 그것을 한 적이 없기 때문에. 어떻게 이벤트를 테스트 할 수 있는지 궁금 해서요 (클릭 등 ...). 어떤 메소드가 반환되는지 확인하십시오 ...메서드/이벤트에 대한 단위 테스트를 만드는 방법

공유 할 몇 가지 예가 있습니까? 미리 감사드립니다.

+1

[이 질문에 대한] (http://stackoverflow.com/q/2765884/960195) 매우 유사하며 유용한 증명해야합니다. –

답변

0

HttpContext에 의존하는 메서드/이벤트가 결국에는 코드 숨김 파일에 대해 단위 테스트를 작성하는 것이 어렵습니다. HttpContext는 인터페이스 자체를 상속받지 않는 봉인 된 클래스입니다. 그것은 모의하는 것을 불가능하게 만든다.

유효한 HttpContext가 있어야 할 수도 있다고 가정하면 (예 : 리디렉션) 유닛 테스트에서 "개체가 초기화되지 않았습니다."예외가 발생합니다.

MVP (Model-View-Presenter) 패턴 등을 적용하여 asp.net 응용 프로그램을 더 쉽게 단위 테스트를 만들 수 있습니다. 비즈니스 로직과 모델을 UI로 분리합니다.

아이디어는 코드 숨김 파일에서 모든 비즈니스 로직을 별도의 일반 C# 클래스 (Presenter)로 옮기고 이에 대한 단위 테스트를 작성할 수도 있습니다. 내가 MVP를 적용하기 위해 다시 요소 모든 코드를 말하는 게 아니에요 http://msdn.microsoft.com/en-us/magazine/cc188690.aspx

, 나는 단지에 비즈니스 로직 가능한 이동하는 제안 해요 :

현재 ASP.NET 및 MVP에 대한 자세한 내용을 찾을 수 있습니다 MVP를 지침으로 사용하여 테스트하는 별도의 클래스입니다.

0

이것은 ASP.NET의 큰 설계 결함 중 하나이며 ASP.NET MVC에서 많은 새로운 프로젝트가 개발되고있는 이유 중 하나입니다. François Wahl이 말했듯이, 프로젝트를보다 테스트하기 쉽게하기 위해 가능한 한 많은 비즈니스 논리를 발표자 클래스로 이동시켜 단위 테스트를 작성할 수 있습니다.

ASP.NET 이벤트 처리기를 테스트하려면 UI 자체에서 테스트를 대상으로 지정해야합니다. Selenium과 같은 도구가 유용합니다. 그것은 클라이언트에서 실행되므로 서버에서 실행중인 플랫폼에 상관없이 완전히 독립적입니다. 또한 테스트 케이스를 자동화하는 데 도움이되는 Firefox 부가 기능도 제공됩니다. 당신이 방법을 다음에 asp.net 코드를 테스트 할 수있는

0

당신은 http://watin.org/

같은 도구를 사용할 수 있습니다.

[Test] 
public void ExampleTest() 
{ 
IE ie = new IE("http://www.google.com"); 

ie.TextField(Find.ByName("q")).TypeText("WatiN"); 
ie.Button(Find.ByValue("Google Search")).Click(); 
Link link = ie.Link(Find.By("href", "http://watin.sourceforge.net/")); 

Assert.That(link.Text == "WatiN Home"); 
} 

기기에 비즈니스 클래스를 테스트 당신은 NUNIT를 사용할 수 있으며 코뿔소는 프레임 워크

당신이 다음 위치에서 사용할 수있는 다른 조롱 프레임 워크이다 MOQ를 찾을 수 조롱으로 조롱.

http://code.google.com/p/moq/

UI 테스트를 위해 당신은 비주얼 스튜디오에서 셀레늄 또는 codedUI 테스트를 사용할 수 있습니다. 프로젝트 구조에 대한 은 MVP 또는 MVC를 프레임 워크로 사용하여 우려를 분리하고 NUNIT 또는 다른 단위 테스트 프레임 워크를 사용하여 모델 논리를 테스트 할 수 있습니다.

관련 문제