В VS 2013, я не могу заставить этот асинхронный тест потерпеть неудачу.
У меня xUnit 1.8.0.1539 (установлен из nuget), с расширением VSU xUnit Test Runner (0.99.5). Все текущие, AFAIK.
У меня также есть ссылка Moq, AutoFixture и FluentAssertions в unit test, но я не думаю, что это имеет значение (но я допускаю это в случае, если это так).
Я провел асинхронные модульные тесты в других областях моего решения, и они работают.
Мне не хватает чего-то с этими недавно созданными тестами, и я не могу сказать, что мне не хватает или что-то не так.
ПРИМЕЧАНИЕ Код SUT не должен быть полным. Я просто пытаюсь получить красный свет первым, прежде чем писать код, чтобы сделать тест зеленым.
Здесь тестовый код:
using System.Threading.Tasks;
using FluentAssertions;
using Xunit;
namespace MobileApp.Proxy.Test
{
public class WhenRetrievingPriceDataFromClient
{
[Fact]
public async Task GroupReportIsReturnedWithSomeData()
{
// arrange
var sut = new Client();
// act
var actual = await sut.GetReportGroupAsync();
// assert
// Xunit test
Assert.Null(actual);
Assert.NotNull(actual);
// FluentAssertions
actual.Should().BeNull();
actual.Should().NotBeNull();
}
}
}
И вот код SUT:
using System;
using System.Diagnostics;
using System.Net.Http;
using System.Threading.Tasks;
using MobileApp.Proxy.Properties;
namespace MobileApp.Proxy
{
public class Client
{
public async Task<ReportGroup> GetReportGroupAsync()
{
return await Task.FromResult(new ReportGroup());
}
}
}
Очевидно, что этот тест не сработает! Утверждения для Null и NotNull не могут быть успешными, поэтому я пришел к выводу, что тест завершается до того, как он завершит получение ответа от SUT.
Что я пропустил?
ИЛИ, есть ли лучший способ, которым я должен был запустить асинхронный тест, чтобы убедиться, что он не работает до написания кода SUT?