[c#] NUnit 대 xUnit

NUnitxUnit.net 의 차이점은 무엇입니까 ? 둘 중 하나만 개발하는 것이 아니라 두 가지를 개발하는 이유는 무엇입니까?

나는 xUnit이 NUnit의 발명가에 의해 개발되고 있다는 것을 읽었습니다.

xUnit.net은 .NET Framework 용 단위 테스트 도구입니다. NUnit
의 최초 발명가가 작성

반면에 :

NUnit은 모든 .Net 언어에 대한 단위 테스트 프레임 워크입니다. 현재 프로덕션 릴리스 인 버전 2.6은이 xUnit 기반 단위 테스트 도구 의 일곱 번째 주요 릴리스입니다.

그렇다면 진실은 어디에 있습니까?



답변

이 답변을 작성할 당시 최신 NUnit 버전은 v3.5이고 xUnit.net은 v2.1입니다.

두 프레임 워크 모두 훌륭하며, 둘 다 병렬 테스트 실행을 지원합니다 (다른 방식으로). NUnit 은 2002 년부터 사용되어 왔으며 널리 사용되고 잘 문서화되어 있으며 대규모 커뮤니티가있는 반면 xUnit.net 은 더 현대적이고 TDD를 더 잘 준수 하며 확장 가능하며 .NET Core 개발에서 유행하고 있습니다. 또한 잘 문서화되어 있습니다.

그 외에도 내가 알아 차린 주요 차이점은 xUnit.net이 테스트 메서드를 실행하는 방식입니다. 그래서 NUnit 에는 테스트 클래스와 테스트 메서드 세트가 있습니다. NUnit은 테스트 클래스의 새 인스턴스를 만든 다음 동일한 인스턴스에서 모든 테스트 메서드를 실행합니다. 반면 xUnit.net 시험 방법 매우 각 테스트 클래스의 새로운 인스턴스를 생성한다. . 따라서 TDD에서 허용되지 않는 테스트 방법이 서로 의존하기 때문에 필드 또는 속성을 사용하여 테스트 방법간에 데이터를 공유 할 수 없습니다. 따라서 xunit.net을 사용하면 테스트 방법이 완전히 격리되어 있는지 확인할 수 있습니다.

하지만 테스트 방법간에 일부 데이터를 공유하려는 경우 xUnit을 사용하면 그렇게 할 수 있습니다. 따라서 기본적으로 모든 테스트 방법은 완전히 격리되지만 의도적으로 특정 경우에이 격리를 해제 할 수 있습니다. 나는이 태도를 좋아한다. 그것이 내가 더 좋아하는 이유이다.


답변

단일 도구 ( xUnit.net )의 이름을 전체 단위 테스트 프레임 워크 클래스의 이름 ( xUnit , 언어 / 환경을 나타내는 x , 예 : JUnit, NUnit, …) 과 혼동하고 있습니다.


답변

xUnit 전문가 :

xUnit은 이전의 “SetUp”및 “TearDown”메서드를 피함으로써 새로운 개념을 따릅니다. .NET 개발자처럼해야하는 것처럼 IDisposable과 생성자를 사용해야합니다. 또한 xUnit에는 명확한 컨텍스트 공유 개념이 있습니다.

xUnit 단점 :

테스트 컨텍스트를 가져올 수있는 가용성은 아직 구현되지 않았습니다.


답변

xUnit의 한 가지 이점은 다른 클래스에서 테스트를 찾는 것입니다. 병렬로 실행됩니다 . 테스트 케이스가 많은 경우 이렇게하면 많은 시간을 절약 할 수 있습니다.

물론이 기능을 끄거나 작업 (스레드 수, 클래스 당 스레드, 어셈블리 당 테스트 등)을 제어 할 수 있습니다.

하나는 xUnit을 사용하고 다른 하나는 NUnit을 사용하는 두 개의 테스트 프로젝트 로이 샘플 솔루션을 확인하십시오 .

여기 에서 xUnit의 병렬 테스트에 대해 자세히 알아볼 수 있습니다 .


답변