아래에 설명 된대로 mscorlib 가짜 DLL을 별도의 프로젝트에서 참조하는 데 문제가 있습니다.Fake가 Fake 프로젝트에서 Fake dll을 제대로 참조하지 않는 이유는 무엇입니까?
나는 MS Fakes를 사용하여 단위 테스트를 작성하는 수많은 VS12 솔루션을 보유하고 있습니다. 다음 URL의 제안에 따라 필자는 위조 된 DLL에 대한 프로젝트를 만들기로 결정했습니다. Code generation, compilation, and naming conventions in Microsoft Fakes. 아이디어는 가짜 DLL의 위치가 현지화 될 것이므로 테스트 프로젝트 전반에 걸쳐 수많은 가짜 DLL이 필요하지는 않습니다. (나는이에게 일반적인 가짜 라이브러리를 호출 할 수 있습니다.) 현재의 내 단위 테스트에서
를, 내가 PresentationCore
, System.Management
및 System
에서 심을 사용하고 있습니다. 그러나 사용하고있는 시스템 shim은 실제로 mscorlib.dll
에 있으며, 특히 Convert (정적 클래스) 및 DriveInfo (밀폐 된 클래스)에 있습니다. 난 단지 mscorlib에에서 제작 한 (지금은)이 두 클래스를 필요로하기 때문에 다음과 같은 .fakes는 mscorlib에 대한 파일 :
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<StubGeneration>
<Clear/>
</StubGeneration>
<ShimGeneration>
<Clear/>
<Add FullName="Convert"/>
<Add FullName="DriveInfo"/>
</ShimGeneration>
</Fakes>
, 나는 비슷한 .fakes이에 의해 분명하고 추가 클래스 파일 이름.
그러나 내 테스트 프로젝트에서 mscorlib.4.0.0.0.Fakes DLL에 대한 참조를 공통 가짜 라이브러리에서 추가하면 Convert 및 DriveInfo shim을 사용하는 테스트가 실행되지 않습니다. 대신 테스트 메서드는 Microsoft.QualityTools.Testing.Fakes.Shims.ShimNotSupportedException을 throw하여 지원되지 않는 shimmed 클래스의 이름을 지정합니다. 공통 가짜 라이브러리를 참조 할 때 PresentationCore 및 System.Management의 기능을 사용하는 테스트가 여전히 작동합니다. 내 테스트 프로젝트에 직접적으로 (그리고 mscorlib에 간접적으로) 시스템에 대한 페이크 어셈블리를 추가하는 경우
하지만, 내 테스트 프로젝트에서 동일한 mscorlib.fakes 파일을 생성하고 지역 mscorlib.4.0에 대한 참조를 추가합니다. 0.0.Fakes Dll, 공통 가짜 라이브러리에 링크되었을 때 예외를 던진 테스트는 결함없이 실행됩니다.
일반 가짜 라이브러리에서 mscorlib 가짜 DLL을 개체 브라우저를 사용하여 살펴본 후 로컬로 빌드 된 DLL과 비교해 보았습니다. 작동하지 않는 일반적인 가짜 라이브러리에 mscorlib에 가짜를 참조하는 이유
는 사람이 어떤 생각을 가지고 있습니까?