2011-06-14 4 views
6

TDD를 처음 사용하고 Visual Studio 2010 솔루션의 단위 테스트 옵션을 찾고 있습니다. 이 솔루션은 MVC3 웹 응용 프로그램입니다. IMC, 저장소 및 작업 단위 패턴과 함께 DDD를 사용하려고 시도하면 입니다.입니다. 또한 EF4 & EF4 POCO 템플릿을 사용합니다. (나는 그 중 많은 모델을 Microsoft N-layer App에서 시도해 보았고, 다른 몇 개의 블로그에서 디자인 패턴을 빌려왔다.)Visual Studio 2010의 단위 테스트를 위해 현재 선택되는 옵션은 무엇입니까?

나는 이것에 대해 두 시간 동안 검색하고 읽었으며, 나는 내가 돌아서는 모든 곳에서 상반되는 정보를 찾고있는 것처럼 보인다. 이것의 대부분은 오랜 결과가 나오고 Visual Studio 2010을위한 옵션이 진화하고 있기 때문입니다.

몇 가지 옵션이 있습니다. 그러나 새로운 옵션에서 시대에 뒤진 옵션을 식별하는 데 어려움을 겪고 있습니다. 사람들이 사용하는 참조에서 모호한 점입니다. 여기 popular discussion조차도 낡은/모호한/충돌하는 정보가 있습니다. 예를 들어

:

  1. MSTest, Visual Studio Unit Testing FrameworkMicrosoft.VisualStudio.TestTools.UnitTesting 사이에 차이가 있나요? 그렇다면, 무엇? 이것들은 다르지만 내가 본 몇몇 토론에서 부적절하게 참조 된 것 같습니다.

  2. NUnit의 저자도 xUnit을 저작 했으므로 xUnit이 NUnit을 대체하므로 NUnit이 사용되지 않습니다. 오늘날 심지어 일부는 NUnit을 선호합니다. NUnit이 더 이상 사용되지 않는다면 xUnit에 비해 NUnit을 사용하는 이유는 무엇입니까? NUnit이 더 이상 사용되지 않는다면 xUnit이 원래 의도했던 것처럼 이륙하지 않는다는 의미입니까? 왜 저자는 겉으로보기에 중복 된 두 가지 도구를 계속 지원할 것입니까?

  3. 테스트 할 명령 줄을 별도로 실행하거나 TestDriven.Net과 같은 도구를 구입하지 않고도 VS2010에 통합되는 것은 어느 것입니까? (비록 내가 이것들을 지원한다면 ReSharper를 가지고있다.)

  4. 이것들에 대한 더 오래된 논의를하게하는 주목할만한 변화가 최근에 있었습니까?

  5. 내가 위에서 언급 한 것 이상 또는 더 고려해야 할 다른 것들이 있습니까?

내가 반드시 (당신은 환영보다 더있어 비록 당신이 원하는 경우 하나를 제공하기 위해)에 대한 심층적 인 비교를 찾고 아니지만, 현재의 최신 합의의 더 새로운 VS2010 개발을 위해 현재 사용되고있는 도구.

표면 상으로는 "Visual Studio Unit Testing Framework"가 VS2010 (Pro)에 기본적으로 통합되어있는 것처럼 보입니다. 다른 일부와는 달리 신속하게 설치하여 실행할 수있는 것 같습니다. 조금 비등하더라도. 그러나 내가 새로운 사람인 것에 따라, 나는 길의 아래에서 3 개월 그것으로 들어가고 싶지 않다, 그 다음 내가 모으는 것이 더 쉽기 때문에 단지 모퉁이에 나 자신을 칠했다는 것을 깨닫는다.

또한이 질문은 개방적이고 광범위한 성격 때문에 일부 사람들이 "나쁜"질문으로 간주 할 수 있지만, 이들은 다른 질문이지만 관련성이 있다고 생각하며 모든 것이 내 장군님에게서 비롯된 것이라고 생각합니다. VS2010의 단위 테스트에 대해 모호하고 상충되는 점에 대한 혼란이 있습니다.

미리 감사드립니다.

편집 : 위의 링크는 거의 3 세인 popular discussion에 대한 업데이트 토론입니다. 이 토론은 좋은 지적이지만, 3 년 후에 많은 변화가있을 수 있으며, 나는 그 주제에 대한보다 최근의 평가를 좋아한다.

답변

7
  1. 모두 똑같은 .. 혼동 (MSTest는 러너, 프레임 워크는 DLL 임). 앞으로 MSTest로 언급 할 것입니다.
  2. xUnit과 마일리지가 충분하지 않습니다. 나는 NUnit 캠프에 단단히 눕습니다. 역사에 대해서는 잘 모릅니다. 그러나 AFAIR Jim Newkirk은 MSTest 개발을 위해 Microsoft에 고용되었습니다. 분명히 NUnit은 더 이상 사용되지 않거나 감속하지 않는다고 대답 할 수 있습니다. 보고 일 이내에 버그가 수정되었습니다. Charlie Poole은 잠시 동안 (그리고 별의 일을하고) 그것을 향해 가고 있습니다. NUnit은 Beck의 SUnit 및 JUnit으로 시작한 xUnit 테스트 주자 중 가장 오래된 것입니다. 나는 그걸로 자랐다. 방해가되지 않고 일상적인 개발에 필요한 거의 모든 기능을 갖추고 있습니다. MSTest는 VisualStudio 통합을 제공하지만, 미세한 편차로 물을 혼란스럽게합니다 (병렬화, 고정 장치 설정이 정적이어야 함 등). 다른 사람들은 테스트 러너를 차별화 된 방법으로 확장하려고합니다 (예 : 테스트 픽스처에 대한 이론 등의 용어 변경) 및 테스트 작성 방법. 필자는 테스트 러너를 연장 할 필요가 없었습니다. 어쩌면 나는 그것을 필요로하는 환경에서 일하지 않았을 것이다.
  3. NUnit은 MSTest와 같은 선반과 통합되지 않습니다. 그러나 Resharper (당신이해야한다)가 있다면, 그것은이 격차를 막아줍니다. 또한 MSTest AFAIK는 폴더에 복사하여 실행할 수있는 NUnit과 달리 전체 IDE (특정 에디션)의 복사본이 필요합니다. "MSTest를 사용하는 경우 무료 코드 범위"로 TFS에 연결됩니다. 조직에서 CI 용 TFS를 사용하는 경우 MSTest 이외의 다른 기능을 "필 요한 사용자 지정 코드"로 통합 할 수 있습니다.

4 및 5 가지가 변경되어 최종 답을 작성하기가 어렵습니다.

요약 : NUnit은 배우기가 더 쉽고 (하루 정도 소요될 것입니다.) 대부분의 문학은 w.r.t. TDD는 아는 경우 더 쉽게 작동합니다. 저는 개인적으로 결코 움직일 이유가 없었습니다 (예를 들어, NUnit은 xUnit과는 달리 이것을하지 않고 살 수 없습니다). MS-CI (및 "무료"Coverage 및 TestImpact)가 큰 경우가 아니라면 NUnit으로 시작하여 진행하십시오. 실버 테스트 주자가 아닙니다.
이 도구는 성공을 보장하지 않으므로 이러한 도구를 사용하는 방법입니다. 하나 고르고 시작하고 적응하십시오.

HTH

+0

고마워요, 기슈. 나는 NUnit의 팬들이 당신과 같이 "자란"팬인지 궁금합니다. 예를 들어, 누군가가 오늘부터 배우기 시작한다면 처음부터 xUnit을 시작하는 것이 낫겠습니까? 아마도 NUnit은 더 이상 사용되지 않을 것이지만 * 궁극적 인 목표는 xUnit이 NUnit을 대체하는 것입니다. 그것들은 제가 고민하고있는 질문들입니다. 또한, # 1의 경우, 당신은 그들이 동일하다고 말합니다. 그러나 내가 올린 링크를 확인해 보면 (틀림없이, 그들은 Wikipedia 출신 임), 그들은 동일하지 않다는 것을 명시합니다. 따라서 내가 읽고있는 모순되는 사실들. –

+0

@Jerad Rose - TestRunner exe는 MSTest라고하며, 러너가 소비 할 DLL을 작성하려면 "VS Unit Testing Framework"어셈블리를 참조해야합니다. 러너와 프레임 워크에 diff 이름이 필요한 이유를 모르겠다 ... xUnit은 2007-8 년경에 어딘가에서 발표했다. 3 년은 따라 잡기 위해 오랜 시간입니다. 또한 "왜 우리는 xUnit.Net을 구축 했습니까?"여전히 (나를 위해) 충분히 매력적이지 않습니다. RoyOsherove는 좀 더 자세한 게시물을 가지고 있지만 http://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html 일자. http://stackoverflow.com/questions/261139를 참조하십시오. – Gishu

+0

당신은 또한 그것의 침착하기 위해 사소한 시간 동안 두 사람을 밖으로 시도 할 수 있습니다. 그럼 결정을 내릴 – Gishu

0

3 번 답변 : TestDriven은 VS2010과 잘 통합됩니다. 테스트를 실행하기위한 컨텍스트 메뉴 옵션이 제공되며 일부 명령을 바로 가기 키에 연결하여 모든 테스트를 신속하게 실행할 수 있습니다.

+0

그러나 (왼쪽 창에서 도구 아래 하단에) 단위 테스트는 그가 요구했습니다 경우 단위 테스트 프레임 워크의 VS2010과 통합되어 Testdriven.NET 또는 유사 제품을 구입하지 않아도됩니다. –

+0

네 말이 맞아. 나는 TestDriven.NET (personal edition)을 무료로 사용하고있다. 이 버전의 제한 사항을 잘 모릅니다. MSTest 만 VS에 통합됩니다. –

+0

고맙지 만 개인용으로는 적합하지 않습니다. 프로페셔널을 구입해야합니다. –

1

이것은 생명을 결정하는 것이 아닙니다. 일부 프로젝트에서는 MSTest를, 다른 프로젝트에서는 NUnit을 사용합니다. 나는 결코 xUnit을 시도하지 않았지만, 역시 괜찮다고 확신한다.

나 자신을 위해 MSTest는 기본 제공 템플릿과 키 바인딩의 b/c를 선택하면 실행 및 설정을 빠르게 테스트 할 수 있습니다. 즉, dev 팀에서 VS를 사용할 수없는 사람이라면 기쁨이 아닙니다.

NUnit을 사용할 때 Resharper에 대한 비용을 지불하고 싶지 않았습니다. (죄송합니다. 실제로 작동하는 것을 보았지만 간단히 밝혀지지 않았습니다.) 대신 Visual NUnit을 사용합니다. http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099 무료입니다. Visual Studio의 UI가 통합되어 있습니다 (멋진 UI는 아니지만 TestDriven.NET보다 더 낫습니다).

+0

Re : "이것은 인생을 바꾸는 결정이 아닙니다."이것이 이것이 사실인지 알아 내기 위해 이것을 시작하는 주된 이유 중 하나입니다. 나는 어떤 사람들이 한 길로 내려 갔다가, 나중에 가서 다른 길로 내려가는 곳을 보았다. 가능하다면이 프로젝트가 매우 크고 내가 그렇게해야 할 필요가 있음을 알게되면 상당히 고통 스러울 것입니다. –

+0

@ Jerad> 그러면 주요 질문은 다른 개발자가 경험하고 액세스 한 것입니다. 그것 이외의 객관적 (imo) 차이점은 없습니다. – Paul

1

ReSharper는 xUnit, NUnit 및 MSTest로 작성된 테스트를 실행할 수 있습니다.

xUnit의가 필요로하는 (무료)을 xUnitContrib 페이지에 링크되어 ReSharper에서에 대한 플러그인 : 상자 밖으로 http://xunitcontrib.codeplex.com/

NUnit를하고 MSTEST 모두 작동합니다.

당신이 ReSharper에서 아래에 설치되어있는 단위 테스트 프레임 워크 볼 수 있습니다 ReSharper에서에서

-> 옵션 ->

+0

좋은 정보, 위의 대답에 대한 의견으로 게시해야하지만 실제로는 @ Gishu에 대한 답변으로 경쟁하기에 충분한 정보가 아닙니다. – condiosluzverde

+0

@arrocharGeek이 답변에는 3 부분으로 구성되어 있기 때문에 서식을 원했습니다. 또한 답변을 언급하지 않았다고 생각합니다. – Rangoric

관련 문제