단위 테스트, NUnit 또는 Visual Studio?
Visual Studio (때로는 resharper)를 사용하여 단위 테스트를 실행하고 있습니다.
NUnit에 대해 들었지만 그것에 대해 많은 것을 알지 못합니다 ...
내가 신경 써야 할까? 비주얼 스튜디오보다 더 나은 것을 제공 할 수 있습니까?
NUnit을 사용해야합니까? 그 이유는 무엇입니까?
NUnit은 MS-Test보다 장점이 거의 없습니다
- Suite 속성-테스트를 집계하여 개별적으로 실행할 수 있습니다 (예 : 빠르고 느린 테스트가있는 대규모 프로젝트에 유용)
- 판독 가능한 어설트 방법 (예 :
Assert.AreEqual(expected, actual)
vsAssert.That(actual, Is.EqualTo(expected))
- NUnit은 자주 버전을 업데이트합니다. MS-Test는 VS 버전 당 하나만 있습니다.
- Resharper 및 TestDriven.NET을 포함한 많은 통합 러너
- 예상되는 예외 메시지 어설 션-NUnit의 속성을 사용하여 수행 할 수 있지만 MS-Test에서 Try-Catch를 사용하여 수행해야합니다.
[TestCase]
! NUnit은 매개 변수화 된 테스트를 허용합니다.
나의 현재의 관점에서 내가 권합니다 (평균 약 10 개발자와 개발의 8 개월 후) 에 대해 다음과 같은 이유로 MSTEST를 사용하여
- 프레임 워크 자체는 상당히 느립니다. 나는 당신이 작성하는 테스트 코드를 의미하지 않는다-그것은 당신의 통제하에있다. 테스트 스위트, 단일 테스트 등을 실행하든간에 테스트를 실행하는 프레임 워크가 느리다는 것을 의미합니다.
- Test-Metadata 파일을 유지해야하므로 여러 개발자가 파일을 작업 할 때 (예 : 메타 데이터 등) 항상 합병증이 발생합니다. 다른 모든 테스트 스위트에는 메타 데이터 파일이 필요하지 않습니다. 테스트를 구성하는 것은 좋지만 네임 스페이스, 클래스 및 메소드 이름을 통해 동일한 결과를 얻을 수 있습니다.
- 연속 통합을 수행하는 경우 빌드 시스템에서 단위 테스트를 실행하려면 해당 시스템에 Visual Studio를 설치해야합니다.
다시 말해, 8 개월 전에 다시 결정해야한다면 NUnit을 선택했을 것입니다. 통합 된 테스트 결과 보고서가 없을 수 있지만 개발자는보다 완벽한 테스트 경험을 갖게됩니다.
다음은 MS Test에 대한 나의 경험입니다
- 우리는 약 3800 테스트와 MS 테스트를 실행하고 있습니다.
- 테스트가 실행되기 시작하는 데 시간이 오래 걸리므로 단일 테스트를 실행할 때 어려움이 있습니다.
- 테스트를 실행하려면 약 1GB의 메모리가 필요합니다. 테스트에서 메모리 누수로 인한 것이 아닙니다. 자주 OutOfMemoryExceptions가 발생합니다.
- 많은 리소스를 사용하기 때문에 배치 파일에서 테스트를 시작하고 있습니다. 그렇다면 전체 통합의 장점은 무엇입니까?
- 버그가 많고 불안정합니다.
- 예를 들어, 테스트에서 [무시] 속성을 제거하면 테스트에 대한 정보가 어딘가에 캐시되므로이를 인식하지 못합니다. 때때로 문제를 해결하거나 VS를 다시 시작하는 테스트 목록을 새로 고쳐야합니다.
- 참조 어셈블리를 출력 디렉토리에 무작위로 복사하지 않습니다.
- 배포 항목 (사용할 추가 파일)이 제대로 작동하지 않습니다. 그들은 무작위로 무시됩니다.
- vsmdi 및 testrunconfig 파일에는 숨겨진 정보 (테스트 코드에는 표시되지 않음)가 있습니다. 신경 쓰지 않으면 작동하지 않을 수 있습니다.
- 기능적으로 NUnit과 비교할 수 있지만 VS 테스터 에디션 사용을 고려하면 매우 비쌉니다.
추가 : 우리는 지금 더 많은 테스트를 받았으며 심지어 얼마나 많은 것을 말할 수 없습니다. OutOfMemoryExceptions 및 기타 불안정성 문제로 인해 Visual Studio에서 더 이상 실행할 수 없습니다. 우리는 스크립트에서 테스트를 실행합니다. Visual Studio에서 테스트 결과를 쉽게 볼 수는 있지만 솔루션이 열려 있으면 VS가 매번 충돌합니다. 따라서 텍스트 검색을 사용하여 실패한 테스트를 검색해야합니다. 더 이상 통합 도구의 이점이 없습니다.
다른 업데이트 : 우리는 지금 VS 2013을 사용하고 있습니다. 많은 것들이 바뀌 었습니다. 그들은 우리가 시작한 이후로 세 번째로 MS Test 테스트 러너를 다시 썼습니다. 이로 인해 많은 변경 사항이 발생했지만 새 버전에서는 더 나은 작업을 수행하지 못했습니다. 우리는 더 이상 지원되지 않기 때문에 MS Test의 멋진 기능을 사용하지 않은 것을 기쁘게 생각합니다. 정말 부끄러운 일입니다. 우리는 여전히 모든 단위 테스트를 작성하고 실행하기 위해 스크립트를 사용하고 있습니다. Visual Studio에서 테스트 실행을 시작하는 데 몇 분이 걸렸습니다 (컴파일 후 첫 테스트가 시작될 때까지의 시간 측정). 그들은 아마도 업데이트로 그것을 고칠 것이며 이것은 우리 프로젝트의 특정 문제 일 수 있습니다. 그러나 동일한 테스트를 실행할 때 Resharper가 훨씬 빠릅니다.
결론 : 적어도 Resharper와 함께 사용하면 MS Test가 유용합니다. 그리고 마지막으로 테스트 러너를 작성하는 방법을 알아 내고 다음에 Visual Studio를 업데이트 할 때 이런 종류의 주요 변경 사항을 수행하지 않기를 바랍니다.
NUnit를 사용할 수 있습니다 함께 비주얼 스튜디오와. 별도의 프로그램이 아닌 프레임 워크입니다. 그래서 당신이 그것이 당신에게 적합한 지 볼 수 있습니다 :).
"플러그인을 설치 한 후 도구 메뉴 아래에 새로운 하위 메뉴가 있습니다."
가져 오기에 대한 자세한 내용 은 http://nunitit.codeplex.com/ 을 참조하십시오 .
또한 SO를 사용하여 많은 것을 찾을 수 있습니다. 이 주제 에는 예를 들어 NUnit 대비 MS 표준 테스트의 장점 이 나열되어 있습니다.
NUnit보다 MS-Test의 가장 큰 장점 MS-Test는 Reflection을 사용하여 모의 객체를 생성 할 수 있다는 것입니다. 나는 그것이 매우 유용하다는 것을 알았다
NUnit은 표준 버전의 VS와 함께 작동합니다.
나는 다른 사람들을 확신하지 못하지만 NUnit은 단위 테스트를 실행할 수있는 멋진 GUI와 콘솔을 제공하며 NUnit 테스트 실행 결과에 대한 보고서를 생성하여 테스트 실패 또는 통과 여부와 시간을 자세히 알 수 있습니다. 단위 시험을 치르다
NUnit은 resharper에서도 지원되는 단위 테스트 프레임 워크입니다. 나는 당신이 Microsoft의 단위 테스트 프레임 워크를 사용하고 있다고 생각하므로 NUnit은 Microsoft 제품의 대안 일뿐입니다.)
다음은 NUnit 홈페이지 링크입니다 : http://nunit.org
에서는 NUnit과 , 테스트를 병렬로 실행되지 않는다. 오히려 모든 테스트가 단일 스레드에서 실행되는 것으로 보입니다. MSTest에서 각 테스트는 별도의 스레드에서 인스턴스화되므로 런이 인터리브됩니다. 따라서 테스트 A가 테스트 B의 성공을 위해 테스트 B에 의존하는 경우 테스트 A가 실행될 때 테스트 B가 실행되기 시작하므로 실패 할 수 있습니다.
Visual Studio를 사용하는 경우 단위 테스트를 수행하기 위해 NUnit을 사용해야하고 java (Netbeans)를 실행중인 경우 단위 테스트를 위해 JUnit을 사용해야합니다.
다음은 간단한 계산기 단위 테스트의 예입니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SimpleCalculator;
using NUnit.Framework;
namespace CalculatorTest
{
[TestFixture]
public class Class1
{
public Calculator _calculator;
[TestFixtureSetUp]
public void Initialize()
{
_calculator = new Calculator();
}
[Test]
public void DivideTest()
{
int a = 10;
int b = 2;
int expectedValue = a / b;
int actualvalue = _calculator.Divide(a, b);
Assert.AreEqual(expectedValue, actualvalue,"Failure");
}
}
}
참고 URL : https://stackoverflow.com/questions/1554018/unit-test-nunit-or-visual-studio
'IT박스' 카테고리의 다른 글
쉘 스크립트에 도움말 메소드를 추가하려면 어떻게해야합니까? (0) | 2020.07.23 |
---|---|
C 데이터 유형은“대부분의 컴퓨터에서 직접 지원”되는 방식은 무엇입니까? (0) | 2020.07.23 |
'git gui'를 실행할 때“Loose Object”팝업을 건너 뛰는 방법 (0) | 2020.07.23 |
install : install-file로 추가 된 로컬 메이븐 저장소에서 jar 파일을 제거하는 방법은 무엇입니까? (0) | 2020.07.23 |
Java에서 오류 코드 / 문자열을 정의하는 가장 좋은 방법은 무엇입니까? (0) | 2020.07.23 |