Visual Studio Test Suite / Nunit으로 MSMQ를 자동화하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/831247

문제

작성중인 MSMQ 응용 프로그램에 대한 일련의 자동화 된 장치 테스트를 만들고 싶습니다. 내가 알 수 있듯이, 도전은 테스트 방법에서 이벤트 처리기를 수용하는 방법입니다. 즉, 테스트 방법에서 메시지를 보내서 메시지를 수신하고 처리 한 테스트 방법으로 결과를 다시 반환해야합니다. 나는 이것을 달성하는 방법에 대한 단서가 없으며 어떤 방향이든 크게 감사 할 것입니다.

도움이 되었습니까?

해결책

테스트중인 시스템이 대기열에서 이벤트를 수신한다고 생각하는 단위 테스트를 작성하는 방법을 찾고 있지만 테스트 중에 실제 대기열을 사용하고 싶지 않습니까?

체크 아웃 코뿔소 조롱. 이를 통해 큐 인터페이스의 모의 버전을 작성한 다음 테스트 중에 이벤트를 제기 할 수 있습니다. reimester.dosomething () 메소드를 테스트하기위한 일부 의사 코드는 다음과 같습니다.

// SETUP
MockRepository mocks = new MockRepository();
IQueue mockQueue = mocks.StrictMock<IQueue>();

queue.Received+=null;//create an expectation that someone will subscribe to this event
LastCall.IgnoreArguments();// we don't care who is subscribing
IEventRaiser raiseReceivedEvent = LastCall.GetEventRaiser();//get event raiser for the last event, in this case, Received
Expect.Call(mockQueue.Send).Return(msgId);
mocks.ReplayAll();

// EXEC
Requester req = new Requester(mockQueue);

// We expect this method to send a request to the mock queue object.
req.DoSomething();
// Now we raise an event from the mock queue object.
raiseReceivedEvent.Raise(eventArgs);

// VERIFY
// we would probably also check some state in the Requester object
mocks.VerifyAll();

확인하십시오 코뿔소 조롱 위키 모든 세부 사항에 대해.

다른 팁

일반적으로 단위 테스트는 테스트중인 방법을 분리해야합니다. 나는 MSMQ에 익숙하지 않지만 일반적으로 모의 개체를 만들어 생산 방법으로 전달합니다. 그런 다음 메소드가 Mock Object에 무엇을했는지 감지하여 동작을 올바르게 확인하고 예상 응답을 보냅니다. 생산 방법은 차이를 알지 못합니다. 단위 테스트는 방법이 독립적으로 예상대로 작동하는지 확인하기위한 것입니다.

소리는 당신이 찾고있는 것과 같습니다. 통합 테스트입니다. 단위 테스트 프레임 워크를 사용하여이를 달성 할 수 있지만 자동화 된 빌드에 포함시키지 않습니다. 전용 테스트 머신으로 옮길 것입니다. 단위 테스트는 일반적으로 예상대로 작동하지 않는 클래스 또는 방법을 나타내므로 일반적으로 빌드를 중단합니다. 통합 테스트가 표시되고 방법이나 클래스가 예상대로 서로 상호 작용하지 않는 경우.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top