Her birim testlerimde oturum açmış bir kullanıcı olması gerekir, bu da beni SetUp
testimdeki bir async çağrısı yapmak için zorluyor.Async UnitTests kurulumu C#
Bu işi yapmanın bir yolunu bulamıyorum, ya boş gösterici istisnaları veya kurulum için geçersiz imzalar alıyorum.
public async void SetUp() {}
Bu benim oturum değilim çünkü tüm benim test muhtemelen benim nesnelerle başarısız kılar.
public async Task SetUp() {}
kurulum geçersiz imzası olduğu için göz ardı tüm testini yapar.
Ve her bir testte X serilerimi kopyalamak zorunda kalmak istemiyorum çünkü hepsi tamamen aynı ve kurulumun ne demek olduğu.
Neyi eksik? Bu önemsiz bir problem gibi görünüyor. İşte
Sadece senin SetUp yöntemi hiç zaman uyumsuz ve bu yazmayın gelemedi şey
CreateTicketViewModel _viewModel;
[SetUp()]
public async void SetUp() //I have tried using Task instead of void
{
IUserService userService = Dependency.Instance.Resolve<IUserService>();
await userService.LoginAsync(this.UserName, this.Password);
_viewModel = Dependency.Instance.Resolve<CreateTicketViewModel>();
}
[TearDown()]
public void TearDown()
{
_viewModel = null; // I have tried removing this
}
[Test()]
public void Initialization()
{
// If I put what's in SetUp here and add "async" before void,
// it works just fine
Assert.IsNotNull(_viewModel);
Assert.IsNotNull(_viewModel.Ticket);
}
Sahip olmadığım SUT'de async void olmamasıyla ilgili pek çok blog yazısı okudum, ancak bu blog yazılarının hiçbiri sınama hakkında konuşmuyor. Tasarım problemim var mı? –
Test yöntemlerinizi, Kurulum yöntemi yerine uyumsuz hale getiremiyor musunuz? Ya da SetUp yöntemini senkronize bile yapabilirsiniz. Eskiden olsa önerilir. –
Sadece asscel içeren bir async testi bir uyarı gösterir. Mümkünse bundan kaçınmayı umuyorum. –