我正在使用MassTransit在两个微服务之间交换消息,并且我有一个使用者在收到命令消息时发布事件。
在添加单元测试以覆盖此消息交换的同时,我注意到没有事件发布时,该测试大约需要30秒才能完成,我认为这是默认超时。这是重现该问题的xUnit单元测试。
using System;
using Xunit;
using MassTransit;
using MassTransit.Testing;
using System.Linq;
using SomeProject.MassTransitInterface;
namespace SomeProject.MassTransitInterface.Tests
{
public class CommandTests
{
[Fact]
public void Test1 ()
{
var harness = new InMemoryTestHarness();
var consumer = harness.Consumer<SomeCommandConsumer>();
harness.Start().Wait();
var command = new SomeCommand();
harness.InputQueueSendEndpoint.Send(command);
Assert.True( harness.Sent.Select<SomeCommand>().Any() );
harness.Stop().Wait();
}
}
}
有人知道是否可以调整超时时间,以便在几秒钟后测试失败?
答案 0 :(得分:2)
您可以在线束上设置TestTimeout
属性,所有创建的测试组件都将使用该属性。
/// <summary>
/// Timeout for the test, used for any delay timers
/// </summary>
public TimeSpan TestTimeout { get; set; }
您应该像在测试构造函数中那样尽早设置它,以便设置的所有令牌或计时器都使用该值。