Programming

NUnit 대 MbUnit 대 MSTest 대 xUnit.net

procodes 2020. 2. 25. 22:57
반응형

NUnit 대 MbUnit 대 MSTest 대 xUnit.net


.NET에는 많은 단위 테스팅 프레임 워크가 있습니다. 나는이 작은 기능 비교를 발견했다 : http://xunit.github.io/docs/comparisons.html

이제 우리에게 가장 좋은 것을 선택해야합니다. 그러나 어떻게? 상관이 있나? 어느 것이 가장 미래의 증거이며 그 뒤에 적절한 추진력이 있습니까? 기능에 관심을 가져야합니까? xUnit은 가장 현대적이고 .NET 용으로 특별히 설계된 것처럼 보이지만 NUnit은 다시 널리 채택 된 것으로 보입니다. MSTest는 이미 Visual Studio에 통합되었습니다 ...


나는 이것이 오래된 스레드라는 것을 알고 있지만 xUnit.NET에 대한 투표를 게시 할 것이라고 생각 했습니다 . 언급 된 대부분의 다른 테스트 프레임 워크는 거의 동일하지만 xUnit.NET은 단위 테스트에 대해 독특하고 현대적이며 유연한 접근 방식을 취했습니다. 용어가 변경되어 TestFixtures 및 테스트를 더 이상 정의하지 않습니다. 코드에 대한 팩트 및 이론을 지정하면 TDD / BDD 관점에서 테스트의 개념과 더 잘 통합됩니다.

xUnit.NET은 매우 확장 가능합니다. FactAttribute 및 TraitAttribute 속성 클래스는 봉인되지 않으며 무시할 수있는 기본 메소드를 제공하여 해당 속성이 장식되는 메소드의 실행 방법을 많이 제어 할 수 있습니다. 기본 형식의 xUnit.NET을 사용하면 테스트 방법을 사용하여 NUnit 테스트 픽스처와 유사한 테스트 클래스를 작성할 수 있지만이 형식의 단위 테스트에는 전혀 국한되지 않습니다. 여기에 설명 된대로 BDD 스타일 문제 / 컨텍스트 / 관찰 사양을 지원하도록 프레임 워크를 자유롭게 확장 할 수 있습니다 .

또한 xUnit.NET은 이론 속성 및 해당 데이터 속성을 사용하여 상자에서 바로 맞춤 스타일 테스트를 지원합니다. 맞춤 입력 데이터는 기본 데이터 속성을 확장하여 Excel 문서, 데이터베이스 또는 Word 문서와 같은 사용자 지정 데이터 소스에서로드 할 수 있습니다. 이렇게하면 단위 테스트 및 통합 테스트 모두에 대해 단일 테스트 플랫폼을 활용할 수 있습니다. 제품 의존성과 교육을 줄이는 데 큰 도움이 될 수 있습니다.

테스트에 대한 다른 접근 방식은 xUnit.NET으로도 구현할 수 있습니다. 가능성은 무한합니다. 미래 지향적 인 모의 프레임 워크 인 Moq 와 결합 된 이 둘은 자동화 된 테스트를 구현하기위한 매우 유연하고 확장 가능하며 강력한 플랫폼을 만듭니다.


NUnit은 타사 도구에서 가장 많이 지원됩니다. 또한 다른 세 개보다 오래되었습니다.

나는 개인적으로 단위 테스트 프레임 워크에 관심이 없으며 모의 라이브러리는 훨씬 더 중요합니다 (더 많은 것을 잠그십시오). 하나만 골라 붙이십시오.


나는 MSTest와 함께 가지 않을 것이다. 아마도 Microsoft와의 프레임 워크에 대한 가장 미래의 증거 일지 모르지만 가장 유연한 솔루션은 아닙니다. 해킹 없이는 단독으로 실행되지 않습니다. 따라서 Visual Studio를 설치하지 않고 TFS 이외의 빌드 서버에서 실행하는 것은 어렵습니다. Visual Studio 테스트 러너는 실제로 Testdriven.Net + 다른 프레임 워크보다 느립니다. 또한이 프레임 워크의 릴리스는 Visual Studio 릴리스와 연결되어 있기 때문에 업데이트가 적으며 이전 VS로 작업해야하는 경우 이전 MSTest에 연결됩니다.

나는 당신이 사용하는 다른 프레임 워크 중 많은 것이 중요하다고 생각하지 않습니다. 서로 전환하는 것은 정말 쉽습니다.

동료의 선호도에 따라 XUnit.Net 또는 NUnit을 개인적으로 사용합니다. NUnit이 가장 표준입니다. XUnit.Net은 가장 간단한 프레임 워크입니다.


MSTest를 다른 테스트 프레임 워크로 대체하지 말고 보완하십시오. 보다 완전한 기능을 갖춘 테스트 프레임 워크의 이점을 얻으면서 Visual Studio MSTest 통합을 유지할 수 있습니다.

예를 들어, MSTest와 함께 xUnit을 사용합니다. xUnit.dll 어셈블리에 대한 참조를 추가하고 다음과 같이하십시오. 놀랍게도, 그것은 단지 작동합니다!

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Assert = Xunit.Assert;  // <-- Aliasing the Xunit namespace is key

namespace TestSample
{
    [TestClass]
    public class XunitTestIntegrationSample
    {
        [TestMethod]
        public void TrueTest()
        {
            Assert.True(true);  // <-- this is the Xunit.Assert class
        }

        [TestMethod]
        public void FalseTest()
        {
            Assert.False(true);
        }
    }
}

소규모 / 개인 규모로는 큰 문제가 아니지만 더 큰 규모에서는 빠르게 큰 거래가 될 수 있습니다. 제 고용주는 대규모 Microsoft 상점이지만 여러 가지 이유로 Team System / TFS에 구매할 수 없습니다. 우리는 현재 Subversion + Orcas + MBUnit + TestDriven.NET을 사용하고 있지만 잘 작동하지만 TD.NET을 얻는 것은 번거로운 일이었습니다. MBUnit + TestDriven.NET의 버전 민감도는 큰 번거 로움이며, 법적으로 검토하고 조달하고 처리하고 관리 할 수있는 추가적인 상업적인 것 (TD.NET)을 갖는 것이 쉽지 않습니다. 많은 회사와 마찬가지로 우리 회사도 MSDN Subscription 모델에 만족하고 있으며 수백 명의 개발자를 위해 일회성 조달을 처리하는 데 사용되지 않습니다. 다시 말해, 완벽하게 통합 된 MS 제품은 항상 최고는 아니지만 항상 제 생각에는 중요한 부가 가치입니다.

나는 우리가 현재 단계를 계속 유지할 것이라고 생각합니다. 왜냐하면 우리는 이미 조직적으로 혹을 극복했습니다. 그러나 MS 가이 공간에서 매력적인 제품을 제공하여 개발자 스택을 통합하고 단순화 할 수 있기를 바랍니다.


Nunit은 C ++의 혼합 모드 프로젝트와 잘 작동하지 않으므로 삭제해야했습니다.


큰 문제는 아니며 서로 전환하기가 쉽습니다. 통합되는 MSTest도 큰 문제가되지 않으며 testdriven.net 만 가져 오십시오.

이전 사람이 조롱 프레임 워크를 선택한다고 말했듯이, 내가 가장 좋아하는 것은 Moq입니다.

참고 URL : https://stackoverflow.com/questions/261139/nunit-vs-mbunit-vs-mstest-vs-xunit-net



반응형