Ich weiß, dass es eine schlechte Methode ist, eine Methode async void zurückgeben zu lassen, da es schwierig zu testen ist, aber gibt es einen Grund, dass ein Komponententest asynchrone Task statt async void zurückgeben muss?Ist es schlecht, Unit-Tests async void zurückgeben zu lassen?
Im Grunde ist dies ok:
[Test()]
public async void MyTest()
{
//Some code to run test
//Assert Something
}
Oder sollte ich das tun:
[Test()]
public async Task MyTest()
{
//Some code to run test
//Assert Something
}
Möchten Sie wissen, ob Ihr Test endet, wann Ihr Test endet, und ob Ihr Test erfolgreich abgeschlossen wurde oder nicht? – Servy
Die meisten Unit-Test-Runner unterstützen 'async void'-Methoden (durch Verwendung eines benutzerdefinierten Synchronisationskontexts). Dennoch ist es sicherer/sauberer, 'async Task' für Ihre Tests zu verwenden –
@KevinGosse Es gibt noch viele Dinge, die Sie in Ihrer Methode tun können, um zu verhindern, dass das Testrahmenwerk auch mit einem benutzerdefinierten Sync-Kontext ordnungsgemäß funktioniert. (Zum Beispiel, einige Code mit 'ConfigureAwait (false);' ist alles was man braucht, um Dinge zu brechen.) – Servy