2009-10-16 2 views
20

실제 프로젝트와 서버 측 유닛 테스트가 별도의 프로젝트에있는 표준 ASP.NET MVC (버전 2 미리보기 2) 솔루션이 있습니다.ASP.NET에서 QUnit을 사용하여 Javascript를 테스트하기위한 권장 구조

이 프로젝트는 클라이언트 측에서 매우 무겁기 때문에 QUINIT를 사용하여 주 프로젝트를 테스트하는 ClientTest 프로젝트도 만들고 싶습니다.

내 Scripts/디렉토리에 다양한 스크립트를로드하고 QUnit을 사용하여 테스트하는 단일 HTML 파일로 일반적인 ASP.NET webforms 프로젝트를 만드는 방법을 생각해 보았습니다. 불행히도 이것은 다른 ASP.NET 개발 서버를 생성합니다. 테스트를 실행하기 전에 실행중인 MVC 프로젝트 서버의 포트를 구성 할 수 있지만 기본 MVC 프로젝트에 테스트 HTML 파일을 던지는 것이 아니라 더 나은 방법이되어야합니다.

누구든지 이것에 대해 더 좋은 방법을 알고 있습니까?

답변

17

저는 QUnit 테스트를 별도의 프로젝트에 두는 것에 대해 마음이 듭니다. 사전 빌드 이벤트에서 스크립트를 복사하기 위해 XCOPY을 사용하는 것은 어떻습니까?

은 (프로젝트 이름으로 대체)하여 MVC 프로젝트 MyProj.Web하고 당신의 QUnit 테스트 프로젝트가 MyProj.ClientTest 말한다.

  • ClientTest 프로젝트에서 Scripts 폴더를 만듭니다. "

    XCOPY"$ (SolutionDir) MyProj.Web 스크립트 \ "프로젝트>MyProj.ClientTest 속성에서

  • > 이벤트 빌드의 사전 빌드 이벤트 명령 줄에 다음을 추가 $ (ProjectDir) Scripts "/ S/Y

  • 그런 다음 HTML에 Scripts 폴더에서 적절한 JavaScript 파일을 포함하십시오.

참고 : 테스트를 다시 실행하려면 JavaScript 파일을 새로 고치려면 ClientTest 프로젝트를 다시 빌드해야합니다. 필요에 따라 폴더 이름, 경로 및 XCOPY 옵션을 조정하십시오.

+4

먼저 다음 지침을 포함하는 것이 좋습니다. 그렇지 않으면 대상 디렉토리에 고아 파일이 누적 될 위험이 있습니다. 'DEL "$ (ProjectDir) Scripts \ Web \ * .js" "web"는 테스트 할 .js 파일을 복사하는 하위 디렉토리입니다. – Aaron

6

this article에서 기술을 선택하고 선택할 수 있습니다. 명령 줄 사용, Watn과 함께 NUnit 사용 및보고 테스트 결과 스크랩 등이 있습니다. 이 솔루션은 WatiN에서 모두 처리하므로 테스트를 활용할 별도의 WebForms 프로젝트가 필요하지 않습니다.

+0

WaitiN을 사용하는 것은 흥미로운 아이디어이지만 정확하게 원하는 것은 아닙니다.클라이언트 측에서는 전체 MVC 프레임 워크를 실행하고 있기 때문에 시각적으로 테스트가 필요 없으며 기본 프로젝트에서 테스트 페이지를 갖고 싶지 않습니다. –

2

MVC가 차이점을 만드는 이유는 분명하지 않습니다. 테스트를 CI 빌드에 통합하려는 경우 gWiz의 제안이 이동 경로입니다.

실제 페이지에서 대화 형으로 직접 테스트를 실행하려면 해당 페이지의 모양에 영향을주지 않으면 서 Firebug 용 FireUnit 플러그인을 확인하십시오. John Resig's blog에서 설명한대로 FireUnit을 QUnit으로 감쌀 수도 있습니다.

테스트 물건 포함에 관심이 있으면 관련 스크립트를 테스트/디버그 빌드에 포함시키고 프로덕션 빌드에서 해당 스크립트를 비활성화/제거하십시오.

관련 문제