2014-11-19 6 views
12

를 사용하는 나는 다음과 같은 간단한 테스트 케이스가 있습니다강제 NUNIT 콘솔 주자는 CLR 4.5

이 시험은 .NET 4에서 실패하지만 .NET 4.5에 전달
var uri = new Uri("http://foo.com/bar%2Fbaz"); 
Assert.AreEqual("http://foo.com/bar%2Fbaz", uri.AbsoluteUri); 

, 내가 제공이 사용 ReSharper에서 테스트 러너를 테스트 할 수 있습니다 편리한 CLR 선택 메뉴.

그러나 나는 다음과 같이 NUNIT 콘솔 러너를 사용하여이 테스트를 실행하는 경우 :

NUNIT - Console.exe를 /framework:4.5 "C : \ 데이터 \ 프로젝트 \ UriTest \ 빈 \ 디버그 \ UriTest.dll"

테스트가 실패했습니다. 난 NUNIT - console.exe.config 수정이 추가 한 :

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 

이를 추가 한 후, 나는 주자에서이 출력을하기 시작했다

:

Runtime Environment - 
    OS Version: Microsoft Windows NT 6.2.9200.0 
    CLR Version: 4.0.30319.34209 (Net 4.5) 

ProcessModel: Default DomainUsage: Single 
Execution Runtime: v4.5 

하지만 아직 내 테스트가 실패합니다. 왜 이런 일이 일어나는 지 아십니까?

+0

해결책을 찾았습니까? 나는 똑같은 문제를 겪고있다. –

+0

NUnit 2.6.4로 다시 작성할 수있다. 또한 NUnit 3에 4.0을 사용하도록 강요했지만 테스트에 통과했습니다 ... –

답변

8

이 문제에 대해 자세히 살펴본 후 다른 포럼에서 수집 한 정보는 다음과 같습니다.

먼저 런타임을 자동으로 감지해야합니다. 그렇지 않은 경우 (귀하의 경우),/framework 명령 옵션을 사용하여 적절한 런타임을 사용하여 프레임 워크를 강제로 수행 할 수 있습니다.

nunit-console.exe.config에있는 내용은 NUnit 러너가 지정된 런타임을 사용하도록합니다. 어셈블리가 다른 .NET 버전에 있으면 NUnit은 프레임 워크 버전을 강제 실행하기 위해 별도의 프로세스에서이를 실행합니다.

documentation for NUnit 2.6.2을 참조하십시오. 당신이 당신의 명령 줄에서이 무엇

는 /framework:4.5하지 않아야하지만, 특정 뭔가가 있다면 오히려 /framework:net-4.5

다음 단계는 테스트를 살펴보고 볼 것 실패하게 만든다.

자세한 정보는 더 자세히 말씀해주십시오.

+0

답변 주셔서 감사합니다. 그러나 이것은 작동하지 않습니다. 첫째, clr.bat는 NUnit 2.6.3과 함께 제공되지 않으며 새로운 문서에는 언급되지 않습니다. 또한 이전 문서에서는 "참고 : 구성 파일에서 섹션을 사용하는 경우이 옵션보다 우선합니다"라고 말합니다. 실제로 .exe.config 파일을 사용하여 수행 한 작업입니다. – huseyint

+0

내 대답이 업데이트되었습니다. –

+1

/framework:net-4.5 스위치로 여전히 실패합니다. 1. .NET 4.5.2를 사용하여이 [Test]로 DLL 프로젝트를 만듭니다. 2. 빌드하십시오. 3. nunit-console (또는 해당 문제에 대해서는 nunit GUI)을 통해 실행하십시오. – huseyint

0

.NET 4.0 Framework에는 슬래시 값 인코딩과 관련된 버그가있었습니다. 설명 here을 확인할 수 있습니다. 4.5에서는 결과 RFC-3986을 준수하도록 수정되었습니다. 그래서 4.0 & 4.5에 대해 다른 행동을 취한 것입니다.

+0

네, 변경 사항을 알고 있습니다. 문제는 .NET 4에서 작동하는 것으로 보이는 nunit 테스트 주자와 관련이 있습니다. .NET 4.5를 사용하려고해도 마찬가지입니다. – huseyint

+0

@huseyint, 해결책을 구축하고 있습니까? 테스트를 실행하기 전에 4.5? – ialekseev

+0

예, 내 솔루션은 .NET 4.5.2를 기반으로합니다. – huseyint