Trên VS 2013, tôi không thể kiểm tra không đồng bộ này thành không thành công.xUnit không chờ kiểm tra async
Tôi có xUnit 1.8.0.1539 (được cài đặt từ nuget), với phần mở rộng xUnit Test Runner VS (0.99.5). Tất cả hiện tại, AFAIK.
Tôi cũng có tham chiếu Moq, AutoFixture và FluentAssertions trong bài kiểm tra đơn vị, nhưng tôi không nghĩ rằng vấn đề (nhưng tôi thừa nhận nó trong trường hợp có).
Tôi đã thực hiện kiểm tra đơn vị không đồng bộ ở các khu vực khác trong giải pháp của mình và chúng hoạt động.
Tôi đang thiếu thứ gì đó với các thử nghiệm mới được tạo này và tôi không thể nói những gì tôi đang thiếu hoặc đang làm sai.
LƯU Ý Mã SUT không được hoàn thành. Tôi chỉ cố gắng để có được ánh sáng màu đỏ đầu tiên, trước khi tôi viết mã để làm cho các thử nghiệm đi màu xanh lá cây.
Dưới đây là các mã kiểm tra:
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();
}
}
}
Và đây là mã 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());
}
}
}
Rõ ràng, xét nghiệm này nên thất bại! Asserts cho Null và NotNull không thể thành công, vì vậy kết luận của tôi là bài kiểm tra đang thoát trước khi nó kết thúc nhận được phản hồi từ SUT.
Tôi đã bỏ lỡ điều gì?
HOẶC, có cách nào tốt hơn tôi nên bắt đầu thử nghiệm không đồng bộ để đảm bảo nó không thành công trước khi viết mã SUT không?
Doh! Tôi nhận ra bây giờ những gì tôi đã làm điều đó dẫn đến điều này. Thay vì cài đặt mỗi gói từ Nuget mà tôi muốn, tôi dựa vào trình phân giải phụ thuộc gói tự động của Nuget, và cài đặt gói "AutoFixture with xUnit.net data theory", mong rằng nó sẽ lấy gói mới nhất, khi nó thực sự lấy gói chính xác phiên bản mà nó phụ thuộc vào. –