测试时如何启动两个彼此呼唤的项目?

时间:2019-05-16 11:30:48

标签: c# .net-core xunit

我在测试不同的API端点时遇到问题。我正在测试的端点依赖于第二个API。因此,我正在测试的端点依赖于需要运行的其他服务。当我在Visual Studio中按“运行所有测试”时,测试所依赖的服务将停止运行。

我尝试运行端点依赖的服务,并运行“运行选定的测试”。似乎可行。

这是我正在努力进行的以下测试:

[Theory]
[MemberData(nameof(TestDataGenerator.GetCreateAnswerCommandsFromDataGenerator),
 MemberType = typeof(TestDataGenerator))]
public async void CreateNewAnswer_ReturnsBadRequest(CreateAnswerCommand a,
                                                    CreateAnswerCommand b, 
                                                    CreateAnswerCommand c )
{
    Assert.True(await IsBadRequest(a));
    Assert.True(await IsBadRequest(b));
    Assert.True(await IsBadRequest(c));
}
public class CreateAnswerCommandValidator : AbstractValidator<CreateAnswerCommand>
{
    private readonly IUserServiceClient _client;

    public CreateAnswerCommandValidator(IUserServiceClient client)
    {
        _client = client;

        RuleFor(x => x.TextTranslated).NotEmpty().NotNull();
        RuleFor(x => x.RequestId).NotEmpty().NotNull();
        RuleFor(x => x.UserId).MustAsync(IdExists).WithMessage("ID must be registered");
    }

    private async Task<bool> IdExists(Guid arg1, CancellationToken arg2)
    {
        bool exists = await _client.CheckUserId(arg1);
        return exists;
    }

CreateNewAnswerCommand有一个MustAsynsFluentValidation的电话,它呼叫我的UserService并检查UserId是否存在。

我希望两个测试项目开始旋转,然后在按“运行所有测试”时关闭。

1 个答案:

答案 0 :(得分:0)

如果在同一解决方案中有两个项目,请右键单击第一个项目,然后选择“调试”,然后启动新实例。最后,将测试运行到另一个项目中