3
내 테스트를 끝내려면 테스트 어셈블리가 종속 어셈블리의 섀도 복사본을 미리로드하지 않는 것이 중요합니다.리플렉션을 사용하여 빌드 타임 중에 알 수없는 인터페이스의 모의 객체를 생성하십시오.
조립 T는 부하 및 테스트 조립 A. 조립 A는 내가 빌드시 사용할 수를하지 않고 약간의 정적 멤버를 교체해야 테스트를 위해
B.
에 정의 된 인터페이스에 의존하는 Testframework입니다. 여기 내가에서 오전 딜레마 보여 일부 의사 코드 : A_assembly = Assembly.LoadFrom("A.dll");
A_type = A_assembly.GetType("TheSingleton.Master", true);
MethodInfo Master_Init_Info = type.GetMethod("Init", BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
//before init is called some things need to be replaced
FieldInfo semiknown = A_type.GetField("needsmocking", BindingFlags.Public | BindingFlags.Static));
??? mock_semiknown = MockRepository.GenerateMock<???>();
semiknown.SetValue((???)mock_semiknown, mock_semiknown);
//testing makes only sense if that static is replaced.
Master_Init_Info.Invoke(null, null);
- 내가
semiknown.FieldType
를 통해 유형에 액세스 할 수 있지만, 나에게 무슨 소용이 않습니다? 그 정보를 여하튼 모의 객체 을 만들고 static 멤버로 대체 할 수 있습니까? - 유형을 가져 와서 고정 회원을 대체 할 수 있다고 가정합니다. 모의 수업에서 내 기대를 어떻게 구축 할 수 있습니까?