우리는 C++로 작성된 집에서 만든 COM 구성 요소가 있습니다. 이제 C# 테스트 프로젝트에서 함수와 이벤트를 테스트하려고합니다. 기능 테스트는 꽤 간단합니다. 그러나 이벤트는 트리거되지 않습니다.COM 이벤트 단위 테스트 중이십니까?
MyLib.MyClass m = new MyLib.MyClass();
Assert.IsTrue(m.doStuff()); // Works
// This does not work. OnMyEvent is never called!
m.MyEvent += new MyLib.IMyClassEvents_MyEventHandler(OnMyEvent);
m.triggerEvent();
나는이를 봤 여기에 StackOverflow에 유사한 문제에 대해 읽었습니다. 나는 모든 제안 된 방법을 시도했지만 작동시키지 못한다!
지금까지 active dispatcher으로 테스트를 실행 해 보았지만 성공하지 못했습니다. 또한 Dispatcher.PushFrame()
을 사용하여 수동으로 메인 스레드에서 메시지를 펌핑 해 보았습니다. 아무것도. 내 사건은 결코 실행되지 않습니다. 간단한 WinForms 프로젝트를 만들고 이벤트가 정상적으로 작동하는지 확인했습니다. 따라서이 문제는 단위 테스트에만 적용됩니다.
Q : 활성 이벤트 처리기를 성공적으로 트리거 할 수있는 일반 C# Unit Test를 만들려면 어떻게해야합니까?
거기 밖으로 누군가가 작동 샘플을 가지고 있어야합니다! 도와주세요.
단위 테스트에 실패했습니다. COM 서버는 이벤트를 생성하기 전에 메시지 루프를 펌핑하는 프로그램이 필요합니다. 그것은 STA 계약의 일부입니다. 지원을 받으려면 구성 요소 작성자에게 문의하십시오. –
COM 서버는 우리 자신의 구성 요소입니다.이 구성 요소를 테스트하고 싶습니다. 당신이 말하는 것처럼, 메시지를 펌핑하는 것이 필수적입니다. 그래서 질문은 남아 있습니다. 어떻게 단위 테스트에서 이것을 수행합니까? – l33t
@NOPslider 어떤 단위 테스트 프레임 워크를 사용하고 있습니까? 최신 버전의 NUnit은 기본적으로 MTA 스레딩 모델을 사용합니다. – vcsjones