Die genaue Situation ist, dass ich E2E-Tests mit Protractor.NET (.NET-Port von AngularJS's Protractor E2E Framework) mache und einige Web-Anfragen stellen möchte (und die API - System.Net.Http.HttpClient
- hat alle Async / Task
Methoden), um meinen Test anzuordnen, bevor ich Act / Assert anwende, muss ich das gleiche Arrange-Verfahren für mehrere Tests durchführen.
Ich benutze xUnit.net als meinen Test-Runner und benutze eine Schnittstelle ( IUseFixture<T>
) für den Einrichtungscode pro Fixture. Es wäre schön, wenn es ein IAsyncUseFixture<T>
mit einem Task SetFixtureAsync(T t);
oder etwas gäbe. Ich glaube nicht, dass so etwas existiert. Außerdem glaube ich nicht, dass Konstruktoren auch await
verwenden können, und Konstruktoren sind die einzige andere Möglichkeit, den gleichen Codeblock pro Test in xUnit.net auszuführen.
Was sind meine Möglichkeiten? %Code%? Ist das nicht schlechte Praxis (Deadlock)?
xUnit hat eine IAsyncLifetime
Schnittstelle für asynchrone Setup / Teardown. Die Methoden, die Sie implementieren müssen, sind Task InitializeAsync()
und Task DisposeAsync()
.
InitializeAsync
wird unmittelbar nach der Erstellung der Klasse aufgerufen, bevor sie verwendet wird.
DisposeAsync
wird kurz vor IDisposable.Dispose
aufgerufen, wenn die Klasse auch IDisposable
implementiert.
z.B.
%Vor%Ich würde AsyncLazy verwenden
In meinem Fall möchte ich einige Integrationstests gegen eine selbst gehostete Web-API durchführen.
%Vor%Tags und Links c# async-await xunit.net