2012-01-27 4 views
7

ASP.Net MVC 프로젝트에서 TDD를 약간 연습하면서 특정 작업이 올바른보기를 반환했는지 또는 특정 특성 (예 : [ChildActionOnly] 등)이 있는지 확인하기 위해 테스트를 작성하는 여러 시나리오가 있습니다. (사실, 여기에 유용한 확장 메소드에 대한 많은 흥미로운 게시물이 있으므로 유용한 정보를 얻을 수 있습니다.) 내가 처음으로 단위 테스트 및 TDD의 개념을 도입MVC - 단위 테스트가 잘못 되었나요?

몇 년 전 과정에 대한 강조가 그 시험에 크게 기반으로 한 사용자가 원하는 기능과 특징 뒤에 테스트 로직에 집중해야한다 - 핵심 프로젝트 '요구 사항'.

제 질문은 -이 경우, 렌더링 할 정확한 뷰 파일을 확인하는 사소한 테스트 또는 단위 테스트 방법론에 관한 내용을 포함하지 않는 특정 특성을 가진 작업입니까? 잘못된 이유 (즉, 나 자신이나 다른 동료가 리팩토링 실수를 저 지르지 못하게하는 것) 또는 가치있는 단위 테스트의 유효한 사례에 대한 테스트를 작성하고 있습니까?

+1

나는 "보호하는"대신 동료들에게 "지시하는"것이 더 나을 것이라고 생각한다. 당신의 동료들은 아마도 날카로운 사람 일 것입니다. 조금만 가르치면 모든 사람들이 훨씬 더 잘 끝날 것입니다. 단원 테스트는 안된다고 말하는 것은 아니지만 변경 후 회귀 테스트를하는 것이 좋습니다. –

답변

5

핸들러 메소드가 일부 로직에 따라 두 개 (또는 그 이상)의 뷰 중 하나를 리턴 할 수있는 경우, 올바른 뷰를 표명 한 유닛 테스트가 유용 할 수 있습니다. 논리에 따라 특정 속성을 삽입 한 핸들러 메소드에서도 마찬가지입니다.

오전 나는 (즉, 단순히 리팩토링 실수에서 다른 동료를 보호) 또는 가치 단위 테스트의이 유효한 경우는 잘못된 이유에 대한 테스트를 작성?

회귀 오류를 잡는 것은 단위 테스트의 이점 중 하나입니다. 특히 리펙토링에 유용합니다. 리팩토링을 수행하는 동안 의도하지 않게 뷰가 반환 된 경우 응용 프로그램이 실행될 때만 실행되는 테스트를 기다리는 대신 초기에 잡는 것이 매우 유용합니다.

2

일부 논리에 따라 조치가 다른보기 또는 조치 결과를 리턴하는 경우. 테스트를 작성하십시오.

항상 View()를 반환하면 안됩니다.

작업 이름과 다른 이름으로보기를 반환하면 테스트를 작성하는 것이 좋을 것이라고 주장 할 수 있습니다.

1

에 따라 다릅니다. 예제 중 하나를 사용하려면 : 동작이 특정 특성을 가지고 있는지 확인하는 것은 괜찮지 만, 동작이 예상대로 작동하는지 확인하는 테스트를 작성하는 데는 이 더 좋으며, 특성이 누락되면 실패합니다.

즉, 궁극적으로 테스트는 안전망입니다. 버그가 어느 시점에 미끄러지는 것을 막을 수있는 합당한 기회가 있다면, 그것은 그 일을하고 있습니다.

오버 헤드가 적고 나중에 임의로 손상 될 가능성이 적은 간단한 테스트 인 경우 이동하십시오. 오히려 너무 적은 테스트보다 너무 많은 테스트를하고 싶습니다.

1

실제로 테스트는 논리를 테스트해야합니다. 그건 없어지지 않아야합니다. 그러나 이상적으로 잘못 될 수있는 테스트를 작성해야합니다. 예를 들어, 보안이 필요한 모든 메소드가 적절한 Authorize 속성을 갖도록 보장합니다. 이것은 보안 테스트입니다.

궁극적으로, 당신은 당신이 테스트하기에 유용한 것을 결정합니다.