2009-07-13 3 views
3

리플렉션을 사용하여 클래스의 인스턴스를 동적으로 생성하고 있습니다. 단위 테스트를 통해이를 시도 할 때를 제외하고는 잘 작동합니다. MS 테스트 프레임 워크를 사용하고 있습니다.
파일이나 어셈블리 'Assy'또는 해당 종속성 중 하나를로드 할 수 없습니다. 지정한 파일을 찾을 수 없습니다. "
dll을 해당 파일의 bin \ debug bin에 복사했습니다. 단위 테스트 프로젝트 - 올바른 장소가 아닌가요?유닛/통합 테스트의 리플렉션 관련 문제

string assyName = "Go.Data.SqlServer"; 
string typeName = "GoMolaMola.Data.SqlServer.DataProviderFactory"; 

Assembly assy = Assembly.Load(assyName); 
object o = assy.CreateInstance(typeName); 

아이디어가 있으십니까? 나는 단위 테스트를 처음 받았고 어떤 도움을 주시면 감사하겠습니다. 동적으로 단위 테스트에서 필요한 DLL을로드 할 때

덕분에 이런 경우를 들어

답변

4

bin/Debug 폴더가 아닌 비주얼 스튜디오는 일반적으로 마지막 다섯 개 테스트 실행하는 각을 유지 (A TestResults 폴더로 단위 테스트 컴파일의 출력을 복사합니다. 폴더 이름에 임베드 된 타임 스탬프) 단위 테스트를 실행하십시오.

해당 폴더에 .DLL을 원하는 경우 테스트 프로젝트에서 .DLL에 대한 참조를 만들거나 DeploymentItem 특성을 사용하여 항목이 테스트 디렉터리에 복사되는지 확인하십시오.

+0

맞습니다. bin 폴더에서 실행되지 않습니다. 테스트 프로젝트의 레퍼런스를 추가했는데 그 점을 보완했습니다! 도움 주셔서 감사합니다. – iammaz

0

는 내가 빌드 후 이벤트를 복사하는 디렉토리에 DLL. 나는 그것을 할 수있는 또 다른 방법이 있는지 알고 싶습니다. 즉, 빌드 이벤트로 이동 프로젝트를 통해 마우스 오른쪽 버튼으로 클릭하고 포스트 이와 같이, 복사본을 배치

는이 을 포스트 - 빌드 편집하려면 나를 :(위해 일한 유일한 방법이었다 이벤트 명령 줄 빌드 : 단위 테스트를 실행할 경우

copy $(TargetPath) "$(SolutionDir)yourDir\$(TargetFileName)" 
1

내가 너무이 문제를 직면하고 위의 대답 중 어느 것도 또한 3. 추가 작동하지 않는 속성 DeploymentItem 추가 나를 2. 작동하지 않습니다 프로젝트에 대한 참조를 추가 나 :( 1. 일하지 유닛 테스트 엔진이 타임 스탬프 ....와 매번 새로운 디렉토리를 생성하고이 새로운 디렉토리에서 어셈블리를 검색 할 때 이후 빌드 명령도 가능하지 않습니다.

그러나이 문제를 해결할 수있었습니다. 배포를 활성화하고 로컬 테스트 설정 -> 배포에 지정된 파일을 추가하여