Su VS 2013, non riesco a far fallire questo test asincrono.xUnit non in attesa di test asincrono
devo xUnit 1.8.0.1539 (installato dal NuGet), con l'estensione xUnit test Runner VS (0.99.5). Tutto attuale, AFAIK.
Mi capita anche di avere riferimenti a Moq, AutoFixture e FluentAssertions nel test dell'unità, ma non credo che importi (ma lo ammetto nel caso lo faccia).
Ho eseguito test unitari asincroni in altre aree della mia soluzione e funzionano.
mi manca qualcosa con questo test di nuova creazione, e non posso dire cosa mi manca o facendo male.
NOTA Il codice SUT non è pensato per essere completo. Sto solo cercando di ottenere il semaforo rosso, prima di scrivere il codice per rendere il test verde.
Ecco il codice di prova:
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();
}
}
}
Ed ecco il codice 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());
}
}
}
Ovviamente, questo test dovesse fallire! Gli Assert per Null e NotNull non possono entrambi avere successo, quindi la mia conclusione è che il test sta per terminare prima di ottenere la risposta dal SUT.
Cosa mi sono perso?
Oppure, c'è un modo migliore avrei dovuto iniziare una prova asincrona per assicurarsi che non riesce prima di scrivere il codice SUT?
Doh! Mi rendo conto ora di ciò che ho fatto per questo. Piuttosto che installare ogni pacchetto da Nuget che volevo, ho fatto affidamento sul risolutore di dipendenze del pacchetto automatico di Nuget e ho installato il pacchetto "AutoFixture con teorie di dati xUnit.net", prevedendo che avrebbe recuperato il pacchetto più recente, quando effettivamente recuperava il pacchetto esatto versione da cui dipendeva. –