我需要爲每個單元測試都有一個登錄用戶,這迫使我在測試SetUp
中執行異步調用(登錄)。c#中的異步單元測試安裝#
我無法找到一種方法來完成這項工作,我要麼得到空指針異常,要麼設置無效的簽名。
public async void SetUp() {}
這使我的所有測試失敗,我的對象可能是因爲我沒有登錄。
public async Task SetUp() {}
讓我所有的測試忽略,因爲設置有一個無效的簽名。
我想不必在每次測試中複製我的X系列設置,因爲它們都完全一樣,而且......這就是設置的目的。
我錯過了什麼?這看起來像一個微不足道的問題。
這裏是我現在,對顯示的東西
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);
}
我已經閱讀了許多關於在SUT中沒有異步無效的博客文章,但我沒有,但這些博客文章都沒有談論自己的測試。 我有設計問題嗎? –
難道你不能讓你的測試方法async而不是Setup方法嗎?或者你甚至可以使SetUp方法同步。前者雖然推薦。 –
僅在其中聲明的異步測試顯示警告。如果可能,我希望避免這種情況。 –