[C#] 단위 테스트를위한 NUnit 대 Visual Studio 2008의 테스트 프로젝트? [닫은]

직장에서 새 프로젝트를 시작하고 단위 테스트를 시작하려고합니다. 우리는 VS 2008, C # 및 ASP.NET MVC를 사용할 것입니다. VS2008이 가지고있는 NUnit 또는 내장 테스트 프로젝트를 사용하려고하지만 다른 제안을 연구 할 수 있습니다. 한 시스템이 다른 시스템보다 낫거나 다른 시스템보다 사용 / 이해하기 쉬울까요? 앞으로이 개발 노력을위한 “모범 사례”로이 프로젝트를 시작하려고합니다.

도움과 제안에 감사드립니다 !!



답변

Daok 는 VS2008 테스트 프로젝트의 모든 프로를 지명했습니다. 여기 NUnit의 프로가 있습니다.

  • NUnit에는 조롱 프레임 워크가 있습니다.
  • NUnit은 IDE 외부에서 실행될 수 있습니다. CC.Net과 같은 비 MS 빌드 서버에서 테스트를 실행하려는 경우 유용 할 수 있습니다.
  • NUnit에는 Visual Studio보다 더 많은 버전이 있습니다. 새 버전이 나올 때까지 기다릴 필요가 없으며 새 기능을 사용하기 위해 새 버전의 IDE를 설치할 필요가 없습니다.
  • 행 테스트 등과 같은 NUnit 용으로 개발 된 확장이 있습니다.
  • 어떤 이유로 Visual Studio 테스트를 시작하는 데 시간이 오래 걸립니다. 이것은 2008 년에 더 좋지만 여전히 내 취향에 비해 너무 느립니다. 무언가를 깨지 않았는지 확인하기 위해 빠르게 테스트를 실행하면 시간이 오래 걸릴 수 있습니다. IDE에서 테스트를 실행하기 위해 Testdriven.Net과 같은 NUnit이 실제로 훨씬 빠릅니다. 특히 단일 테스트를 실행할 때.
    Kjetil Klaussen에 따르면 Visual Studio testrunner로 인해 TestDriven.Net에서 MSTest 테스트를 실행하면 MSTest 성능이 NUnit과 비슷해집니다.

답변

단위 테스트 프레임 워크는 실제로 별 문제가되지 않습니다. 테스트 클래스를 별도의 프로젝트 파일과 조건부 컴파일 (예 : VS-> NUnit)로 변환 할 수 있기 때문입니다.

 #if! NUNIT
  Microsoft.VisualStudio.TestTools.UnitTesting 사용;
 #그밖에
  NUnit.Framework 사용;
  Using TestClass = NUnit.Framework.TestFixtureAttribute;
  TestMethod 사용 = NUnit.Framework.TestAttribute;
  TestInitialize 사용 = NUnit.Framework.SetUpAttribute;
  TestCleanup 사용 = NUnit.Framework.TearDownAttribute;
  TestContext 사용 = System.String;
  Using DeploymentItem = NUnit.Framework.DescriptionAttribute;
 #endif

TestDriven.Net 플러그인은 훌륭하고 비싸지 않습니다 … 일반 VS2008 만 있으면 테스트 클래스 또는 테스트 목록에서 테스트를 찾아야합니다. TestDriven.Net을 사용하면 테스트중인 클래스에서 직접 테스트를 실행할 수 있습니다. 결국, 단위 테스트는 유지 관리하기 쉽고 개발자와 가까운 곳에 있어야합니다.


답변

VS2008 내장 단위 테스트 프레임 워크의 장점 / 변경

  1. 2008 버전은 현재 전문가 용 버전으로 구입할 수 있습니다 (고가의 VS 버전이 필요하기 전에 개발자 단위 테스트 용임). 많은 개발자가 개방 / 외부 테스트 프레임 워크를 선택할 수있게되었습니다.
  2. 단일 회사에서 지원하는 API 내장.
  3. 동일한 도구를 사용하여 테스트를 실행하고 작성하십시오 (MSTest도 명령 행을 사용하여 실행할 수 있음).
  4. 단순한 디자인 (Mock 프레임 워크는 없었지만 이것은 많은 프로그래머에게 훌륭한 출발점입니다)
  5. 장기 지원이 부여되었습니다 (nDoc에 발생한 일을 여전히 기억합니다. 5 년 동안 지원되지 않을 수있는 테스트 프레임 워크에 전념하고 싶지 않지만 nUnit을 훌륭한 프레임 워크로 간주합니다.)
  6. 팀 기반 서버를 백엔드로 사용하는 경우 실패한 테스트 데이터로 간단한 방법으로 작업 항목 또는 버그를 작성할 수 있습니다.

답변

나는 2 년간 NUnit을 사용해왔다. VS의 Unit 시스템은 Gui 내부에 있으며 더 이상 혼란없이 개인 기능을 테스트 할 수 있기 때문에 꽤 좋습니다. 또한 VS의 Unit Testing을 사용하면 NUnit만으로는 할 수없는 것들과 다른 것들을 다룰 수 있습니다.


답변

Visual Studio의 테스트 프레임 워크에 대한 약간의 불편 함은 프로젝트 디렉토리를 혼란스럽게 만드는 많은 테스트 실행 파일을 생성한다는 것입니다.

또한 TestDriven.NET과 같은 플러그인이없는 경우 내장 된 Microsoft VS 테스트 프레임 워크에서와 같이 Visual Studio 환경 내에서 NUnit (또는 MbUnit, xUnit 등) 단위 테스트를 디버그 할 수 없습니다.


답변

약간의 주제를 벗어난 주제이지만 NUnit을 사용하는 경우 ReSharper를 사용하는 것이 좋습니다. UI에 몇 가지 단추를 추가하여 IDE 내에서 테스트를 훨씬 쉽게 실행하고 디버그 할 수 있습니다.

이 리뷰는 약간 오래된 내용이지만 자세한 내용은 다음과 같습니다.

http://codebetter.com/blogs/paul.laudeman/archive/2006/08/15/Using-ReSharper-as-an-essential-part-of-your-TDD-toolkit.aspx


답변

XUnit은 그린 필드 프로젝트의 또 다른 가능성입니다. 아마도 더 직관적 인 구문이 있지만 다른 프레임 워크와 실제로 호환되지는 않습니다.

http://www.codeplex.com/xunit