Warten auf Aufgaben im Test-Setup-Code in xUnit.net?

8

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)?

    
Words Like Jared 27.08.2014, 04:56
quelle

3 Antworten

2

Ich bin gerade mit .Result gegangen. So weit, so gut.

    
Words Like Jared 01.09.2014, 02:14
quelle
13

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%     
Wilka 27.08.2017 14:55
quelle
1

Ich würde AsyncLazy verwenden

Ссылка

In meinem Fall möchte ich einige Integrationstests gegen eine selbst gehostete Web-API durchführen.

%Vor%     
superlogical 18.08.2015 22:15
quelle

Tags und Links