원래 VS2010에서 시작한 솔루션의 일부인 어셈블리에 대해 약 300 단위 테스트가 있습니다. 수많은 테스트에서 Micrsoft가 제공 한 Moles 프레임 워크를 사용했지만 VS2012 (업데이트 2)로 업그레이드 한 후 공식적으로 제공된 Fakes 프레임 워크를 사용하도록 테스트를 변경하려고했습니다.Moles에서 Fake로 전환 한 후 VS2012에서 임의의 단위 테스트가 실패합니다.
보통 코드에ShimsContext
과 약간의 변화를 만들어 참여 내가 따라 해당 테스트를 업데이트
:
[TestMethod]
[HostType("Moles")]
public void MyUnitTest_CalledWithXyz_ThrowsException()
{
// Arrange
...
MGroupPrincipal.FindByIdentityPrincipalContextIdentityTypeString =
(t1, t2, t3) => null;
...
try
{
// Act
...
}
catch(Exception ex)
{
// Assert
...
}
}
[TestMethod]
public void MyUnitTest_CalledWithXyz_ThrowsException()
{
using(ShimsContext.Create())
{
// Arrange
...
ShimGroupPrincipal.FindByIdentityPrincipalContextIdentityTypeString =
(t1, t2, t3) => null;
try
{
// Act
...
}
catch(Exception ex)
{
// Assert
...
}
}
}
후하기 전에 내 테스트 수업이 다르다. > 21 개 테스트는 같은 클래스/15 패스
- 실행 테스트 : 나는 테스트를 실행할 때 EST 프로젝트는, 나는 임의의 예를 들어 내가 설명 할 수 없다하는 오류를 얻을 디버그 모드에서 => 2 테스트 실패/34 패스
- 릴리스 모드 => 2 테스트 실패/34 패스에서
- 테스트를 모두 실행합니다. 테스트 실패/15 회 통과 (for 상기 언급 된 클래스)
같은 자신의 시스템에있는 동료의 행동. System.TypeLoadException : 오류 메시지가 항상 TypeLoadException
의 같은
등의 시험 방법은 ... 예외 던졌다 유형 'System.DirectoryServices.Fakes.ShimDirectorySearcher'어셈블리 '을로드 할 수 없습니다를 System.DirectoryServices.4.0.0.0 .Fakes, 버전 = 4.0.0.0, 문화 = 중립, PublicKeyToken = ... " 오류를 표시하지 않습니다 소스 코드 에디터, 인텔리이 예상 작품으로 VS2012 자체에서
, 예를 들어 ShimDirectorySearcher 쇼 곳을 마우스 툴팁 또한 .NET Reflector로 생성 된 Fake 어셈블리 (예 : System.DirectoryServices.4.0.0.0.Fakes.dll)를 열면 오류 메시지에 표시된 유형이 존재합니다.
우리가 VS2010에서 VS2012로 전환하기 전에 모든 테스트가 잘 작동했습니다 (디버그 및 릴리스 모드에서도). 그러나 여기서 우리는 무엇이 잘못되었는지 실마리가 없습니다. 위에서 설명한 방법으로 결과가 변경되는 이유는 무엇입니까? 유형이 존재하더라도 왜 우리는 TypeLoadExceptions를 얻습니까?
불행히도 Micrsoft 또는 인터넷에서 사용할 수있는 도움말은 거의 없습니다.
몰 조립품/공작물을 완전히 없앴습니까? 또한 기존 어셈블리가있는 디렉토리를 모두 지우고 깨끗한 상태로 시작하십시오. 그것은 재미있다. – Spock
여기 또는 http://connect.microsoft.com/visualstudio에서 작은 repro를 게시하십시오. –
@Raj - 이전에 Moles와 가끔 문제가 있었으므로 그렇게했습니다. 나는'.testsettings' 파일을 삭제하고 대신'.runsettings' 파일을 사용하여 해결책을 찾았을 것이라고 생각합니다. 지금 당장은 아니지만 더 자세히 조사하고 업데이트 해 드리겠습니다. @Oleg Sych - 문제를 시연하기위한 작은 새로운 솔루션으로 문제를 재현 할 수 있습니다. – Gorgsenegger