2017-12-20 30 views
2

3 개의 C# 프로젝트 X, Y 및 Z가 있습니다. 두 개의 단위 테스트 프로젝트 Xt가 프로젝트 X에서 코드를 테스트하고 Yt는 프로젝트 Y에서 코드를 테스트합니다. 프로젝트 Z는 라이브러리 프로젝트이고Microsoft Fake 어셈블리 이름 충돌

두 유닛 테스트 프로젝트에서 저는 Z를위한 Fakes 어셈블리를 생성했습니다. 이것은 Z.Fakes.dll 자체 버전을 가지고 있음을 의미합니다. 모든 DLL은 동일한 디렉토리에 출력됩니다. 둘 다 Z.Fakes.dll을 생성하기 때문에 빌드 순서에 따라 출력 디렉터리에서 다른 하나를 덮어 씁니다. 따라서 Shims & 스텁이 가짜 어셈블리에 존재하지 않기 때문에 한 세트의 단위 테스트가 실패합니다.

각 단위 테스트 프로젝트마다 다른 출력 디렉터리를 설정할 수없고 단위 테스트를 단일 단위 테스트 프로젝트로 병합 할 수 없다고 가정하면 어떻게이 가짜 어셈블리 이름 충돌을 피할 수 있습니까? 가짜 어셈블리를 생성하고 별칭을 부여 할 수있는 방법이 있습니까? Zx.Fakes.dll 및 Zy.Fakes.dll?

답변

1

우리가 처리하는 방식은 솔루션에서 가짜 프로젝트를 모두 생성 한 것이므로 fakes 프로젝트의 FakesAssemblies 폴더에 dll을 추가하기 만하면됩니다. 그렇게하면 솔루션 참조 구조가 다음과 같이 표시됩니다.

 
Solution 
- MyFakes 
    - References 
    - X 
    - X.Fakes //Created via the right-click create Fake menu on X 
    - Y 
    - Y.Fakes //Created via the right-click create Fake menu on Y 
    - Z 
    - Z.Fakes //Created via the right-click create Fake menu on Z 
- X.csproj 
    - References 
    - Z 
- Xt.csproj 
    - References 
    - MyFakes //This is just for build order 
    - X 
    - ..\MyFakes\FakesAssemblies\X.Fakes.dll 
    - Z 
    - ..\MyFakes\FakesAssemblies\Z.Fakes.dll 
- Y.csproj 
    - References 
    - Z 
- Yt.csproj 
    - References 
    - MyFakes //This is just for build order 
    - Y 
    - ..\MyFakes\FakesAssemblies\Y.Fakes.dll 
    - Z 
    - ..\MyFakes\FakesAssemblies\Z.Fakes.dll 
- Z.csproj 
+0

완벽하게 답변 해 주셔서 감사합니다. – mindboggler