2009-08-13 3 views
12

ASP.NET MVC 응용 프로그램을 테스트하는 다른 방법을 찾고 있었으며 Steve Sanderson의 MvcIntegrationTestFramework과 충돌했습니다. 이 접근법은 다소 유망 해 보였지만 누군가 공유 할 실제 경험이 있는지 궁금해하고있었습니다.스티브 샌더슨의 MvcIntegrationTestFramework를 사용한 사람이 있습니까?

+0

아직 사용하지는 않았지만 통합 테스트에서 브라우저를 분리하는 아이디어는 매우 매력적입니다. –

+0

하지만 저에게 통합이란 음, 계층의 통합을 의미합니다. 그리고 브라우저 (특히 javascript와 ajax)는 실제로 테스트해야하는 계층입니다. –

+0

안녕하세요 제임스. 확실히해야 할 일이지만 경험상 자동화하기가 어렵고 브라우저의 차이로 인해 여러 가지 작업을 수행해야합니다. 따라서 이것은 브라우저 테스트에서의 대체가 아니라 추가 사항입니다. 그리고 회귀를 찾는 데 유용합니다. – Maurice

답변

7

나는 정말 좋은 결과를 얻고 있습니다. 여기서 처음 보는 라인을 뷰에 추가하자마자 뷰의 테스트 필요성에 대해 다른 사람이 말한 것을 신경 쓰지 않습니다. 비록 코드가 엄격하게 표현과 관련이 있다고하더라도, 자동화 된 테스트를 작성하는 것이 좋습니다. 나의 주요 관심사는 가능한 한 많은 흰색 화면과 노란색 화면 예외/오류를 잡는 것이다.

Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html")); 

내가 할 수있는이 프레임 워크를 볼 수있는 작은 함정 :

    제대로 예외를 throw하지 않고 그래서 페이지가 렌더링되도록 스티븐의 소개 블로그 게시물에서 조각을 사용하고 수행하려면
  • 웹 사이트가 뷰와 액션 메소드 사이에 꽤 복잡한 모델 바인딩을하고 있다면이 예제에서와 같이 꽤 큰 NameValueCollections (실제로 LogonModel 뷰 모델 객체를 취하는 액션 메소드)를 만들 수 있습니다. 이 프레임 워크를 사용하여 복잡한 뷰 모델 객체 유형을 액션 메소드로 전달하는 방법을 알 수 없습니다. browsingSession.ProcessRequest ("URL")를 실행

var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection { {"UserName","myName"}, {"Password", "myPassword"}, {"returnUrl", "/home/myActionMethod"} });

  • 실제로 테스트중인 프로젝트의 구성을 사용하여 테스트중인 웹 코드를 실행하는 응용 프로그램 호스트/컨텍스트를 만듭니다. 이는 테스트가 약간 느리게 실행되고 실제 데이터를 수정할 수 있음을 의미합니다.이 테스트에 포함 된 모든 기능을 사용하여 가짜 버전으로 테스트중인 웹 프로젝트의 데이터 액세스 저장소를 빠르고 쉽게 교체 할 방법이 보이지 않기 때문에 실제 데이터를 수정할 수 있습니다. 테스트 프레임 워크. 다른 말로하면, web.config 기반의 방법을 사용하여 직접 롤백해야 할 것입니다.
+0

후속 조치 - MVC3으로 이동하고 RazorGenerator를 사용하는 것이 좋습니다. MVC2와 MVC3을 동시에 실행할 수 있으며 한 번에 하나의 웹 페이지 만 마이그레이션 할 수 있으므로 원활하게 작동합니다. Steve Sanderson의 프레임 워크가 MVC2의 한계 내에서 잘 작동하지만 개발자 컴퓨터에서 테스트 프레임 워크를 사용할 때와 C.I.에서 테스트 프레임 워크를 사용할 때 필요한 하드 코딩 된 파일 경로의 변경을 관리하는 것이 매우 어렵다는 것을 알게되었습니다. 섬기는 사람. 이 문제는 RazorGenerator + MVC3에 존재하지 않습니다. –

+1

다음 주셔서 감사합니다! RazorGenerator가 어떻게 통합 테스트를 위해 MvcIntegrationTestFramework를 대체하는 데 도움을 주 었는지 간단히 설명 할 수 있습니까? 면도기 프리 컴파일은 어떻게 도움이됩니까? 어쩌면 당신은 그것에 대해 블로그를했습니다 :-) – Oliver

0

이 프레임 워크는 사용하지 않았습니다. 그러나 그의 책 "Pro ASP.NET MVC Framework"을 읽은 경험과 다른 검증 프레임 워크 xVal을 토대로 "나는 위대하다"고 말할 것입니다.

+0

나는 그의 책을 정말 좋아합니다. 사실 나는 지금 내 옆에 사본을 가지고있다. – Maurice

0

약간의 실험을 거쳐 일부 상황에서는 매우 유용 할 수 있습니다. 일반적으로 엄지 손가락을 올려 놓고 향후 작업을한다면 앞으로 프로젝트에 사용할 것입니다.

WatIn 설정을 진행하지 않았고이 프레임 워크에서 다시 다루지 않으려하는 몇 가지 사항을 처리했습니다. 예 : 대화 상자를 통한 인증. 코드 변경이 필요할 수 있습니다.

1

얼마 전에 ardave's answer을 읽은 후, 우리는 실제로 우리의 새로운 Orchard 기반 응용 프로그램 Marinas.info을 위해 자신을 위해 그것을 밖으로 시도했다.

우선, 원래보다 설정하기가 쉽기 때문에 누구나 this version의 포크에서 시작하는 것이 좋습니다.

"정상적인"MVC3 앱의 경우 간단히 작동합니다. 불행히도 Orchard와 함께 적어도 Global.asax.cs의 수정되지 않은 버전에서는 잘 돌아 가지 않았습니다. 그래서 우리는 여전히 browser based testing road으로 내려갔습니다. 그러나 우리는 계속해서 그것을 사용하여 충분히 빠른 과수원 명령을 실행합니다.

관련 문제