4

솔루션을 VS2008에서 VS2010 SP1로 변환하고 3.5 프레임 워크를 대상으로 단위 테스트 프로젝트를 변경했습니다. 단위 테스트 프로젝트에서 몇 가지 참조를 수정하는 것 이외에는 모든 것이 정상적으로 수행되었으며 솔루션이 성공적으로 구축되었습니다. 대부분의 테스트가 성공적으로 수행되었지만 실패한 테스트가있었습니다. 실패한 것들은 private 접근자를 사용하고 있습니다. 개인적으로 필자는 필자가 필자가 필요하다고 생각하지 않기 때문에이 테스트를 제거 하겠지만 SP1에서 잠재적 인 버그가 드러나는 한 모든 사람들이 해결 방법을 찾아 낼 수 있을지 알았습니다.전용 액세서를 사용하는 경우 VS2010 SP1 테스트 대상 3.5 프레임 워크가 실패 함

테스트를 실행할 때 나타나는 오류 메시지는 "이 어셈블리는 현재로드 된 런타임보다 최신 런타임에 의해 빌드되어로드 할 수 없습니다."라는 오류 메시지가 있습니다. 내가 알 수있는 것처럼 private 접근 자 어셈블리는 4.0 런타임 (Microsoft.VisualStudio.QualityTools.UnitTestFramework)을 통해 빌드되는 것으로 보이지만 3.5 런타임은 MSTest에 의해로드되므로 결과 오류가 발생합니다.

Microsoft.VisualStudio.QualityTools.UnitTestFramework에 대한 참조를 특히 버전 9.0 (현재는 10.1)으로 변경하려고 시도했습니다. 이로 인해 컴파일러 오류가 발생하여 개인 액세스 어셈블리가 버전 9.0보다 높은 버전의 Microsoft.VisualStudio.QualityTools.UnitTestFramework를 사용한다고합니다.

생성 된 전용 접근 어셈블리를 삭제하고 다시 생성했지만 여전히 동일한 문제가 있습니다. 단위 테스트 프로젝트에서 3.5 프레임 워크를 대상으로 할 때 VS2010 SP1과 동기화되지 않은 것으로 보입니다. (... 다시없는 매우 귀중한 테스트,하지만 게시물의 시점이 아니다) 여기

은 단위 테스트 중 하나에 대한 코드입니다 : 다음 단계를 수행하여

[TestMethod()] 
    public void GetNullableCharValue_DBNull_ReturnsNull_Test() 
    { 
     object value = DBNull.Value; 
     Nullable<char> expected = null; 
     Nullable<char> actual; 
     actual = RepositoryBase_Accessor.GetNullableCharValue(value); 
     Assert.AreEqual(expected, actual); 
    } 

답변

3

이 문제도 발생했습니다. Visual Studio 2010 SP1은 .NET v3.5 기반의 단위 테스트 프로젝트를 지원합니다. 이전의 단위 테스트는 .NET4를 사용해야했습니다.

제목에 Microsoft Connect bug가 있지만이 답변을 작성한 날에 방금 제출되었으므로 아직 Microsoft로부터 의미있는 응답이 없습니다.

내가 선택한 해결 방법은 Visual Studio 2008 toolchain을 사용하여 private 접근 자 어셈블리를 수동으로 생성하고 유닛 테스트 프로젝트에서 수동 참조를 추가하는 것이 었습니다.

단계는 다음과 같습니다

<ItemGroup> 
    <Shadow Include="Test References\Assembly.accessor" /> 
</ItemGroup> 

2) V3.5 호환 접근을 작성하는 조립 Publicize VS2008 사용 :

1) 단위 테스트 .csproj 파일에서 자동 생성 된 접근을 제거

"%VS90COMNTOOLS%vsvars32.bat" 
publicize Assembly.dll 

3) 어셈블리를 소스 트리 폴더에 복사합니다 (예 :폴더 Accessors 아래 :

copy Assembly_Accessor.dll ProjectDir\Accessors\Assembly_Accessors.dll 

4)는 Visual Studio 인터페이스를 사용하여 단위 테스트 프로젝트에 대한 참조로 접근 어셈블리를 추가

Project -> Add Reference.. -> Browse... 

5)와 솔루션 구축을 Ctrl 키 + Shift + B 그리고 테스트를 실행하십시오.

생성 된 어셈블리를 체크인하거나 빌드 전 이벤트에서 자동으로 만들 수 있습니다.

+0

자세한 답변을 보내 주셔서 감사합니다. 그것은 위대한 작품. – Dominick

+0

VS 2008의 경우 publicize.exe를 다운로드 할 수 있습니까? 링크 된 페이지에는 다운로드 버튼이 없으며 인터넷 검색으로 비어 있습니다. – LCC