BizTalk 응용 프로그램에 대한 자동화 된 시스템 테스트를 작성하고 있지만 테스트의 검증을 실행할 수있는 시점을 결정하는 데 문제가 있습니다. 검증 전에 BizTalk가 메시지를 완전히 처리했는지 또는 메시지 처리 시간이 초과되었는지 확인해야합니다.BizTalk가 메시지 처리를 완료했는지 확인하는 방법
[Test]
public void ReceiveValidTaskMessageTestShouldBeLoggedInMessageLog()
{
// Exercise
MsmqHelpers.SendMessage(InboundQueueName, ValidMessage);
// Verify
Assert.That(() => GetMessageCount("ReceiveError"), Is.EqualTo(0).After(1000));
Assert.That(() => GetMessageCount("Receive"), Is.EqualTo(1).After(1000));
}
마지막 두 줄은 SQL 서버의 테이블에있는 메시지의 사본의 존재를 확인, 성공적인 메시지에 대해 하나 개의 테이블에 오류가 하나 개의 테이블.
여기서 문제는 메시지를 보낸 직후에 오류 테이블에 메시지가 없는지 확인하는 것입니다. BizTalk가 아직 메시지를 처리하지 않았다면 실패 할 경우에도 해당 메시지가 전달됩니다.
이[Test]
public void ReceiveValidTaskMessageTestShouldBeLoggedInMessageLog()
{
// Exercise
MsmqHelpers.SendMessage(InboundQueueName, ValidMessage);
// Verify
Assert.That(() => PendingMessages, Is.EqualTo(0).After(1000));
Assert.That(() => GetMessageCount("ReceiveError"), Is.EqualTo(0));
Assert.That(() => GetMessageCount("Receive"), Is.EqualTo(1));
}