2017-01-16 4 views
1

Ich habe ein ASP.NET Core Project basierend auf der angular2-Vorlage aus dem Core-Vorlagenpaket. Ich habe eine zweite project with xunit and protractor hinzugefügt, um Unit-Test gegen meine Haupt-App zu starten.Testen der ASP.NET Core-App mithilfe von Protractor in Visual Studio 2015

Beide arbeiten gut allein, ist es nur eine kleine Sache, die ich vermissen:

Wenn ich möchte das Hauptprojekt Host irgendwo manuell Winkelmesser Tests, die ich ausführen müssen. Wenn das Hauptprojekt nicht manuell gehostet wird, wird es nicht ausgeführt. Daher schlagen alle Tests fehl, da meine Seite nicht erreichbar ist.

Ich muss wahrscheinlich die Haupt-App/Projekt irgendwie aus dem Test starten, aber ich habe keine Ahnung, wie. Alle Beispiele für Winkelmesser laufen gegen einige bereits laufende Homepages, keines gegen ein anderes Projekt.

Wie starte ich das ASP.NET Core-Hauptprojekt von meinem Testprojekt, sodass es zum Testen ausgeführt wird?

Seltsame Sache ist: Nachdem ich die Haupt-App einmal mit Strg + F5 Winkelmesser mit ChromeDriver gestartet habe, finden Sie die Homepage der App. Aber ich muss es laufen einmal manuell für die Tests zur Arbeit ...

public class EndToEndTests : IDisposable 
{ 
    private const string Url = "https://localhost:44391/"; 
    private readonly IWebDriver _driver; 
    private readonly NgWebDriver _browser; 

    public EndToEndTests() 
    { 
// TODO: somehow get the ASP.NET Core project up and running 
    _driver = new ChromeDriver(@"\test\ChromeDriver"); 
    _driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10)); 
    _browser = new NgWebDriver(_driver); 
    } 

    public void Dispose() 
    { 
    _driver.Quit(); 
    } 

    [Fact(DisplayName = "Has a title")] 
    public void HasATitle() 
    { 
    _browser.Url = Url; 
    Assert.Equal("My page", _browser.Title); 
    } 

Antwort

1

Sie müssen Ihre WebApp selbst in Ihrer SetUp-Methode hosten.

Mit .NET 4.5 Owin basierter Anwendungen, müssen Sie mit WebApp.Start Methode, um das Microsoft.Owin.Hosting Paket verwenden.

Mit .NET Core Sie benötigen WebHostBuilder

+0

Dank verwenden, das klingt vielversprechend! Sie haben keine Hinweise oder Links wie dies zu tun ist? Sonst werde ich den Webhostbuilder googlen. – Sam

+0

I .NET-Core verwenden, aber WebHostBuilder nicht wirklich ein Web-Server hosten, scheint es nur eine zu emulieren, so kann ich _testserver.CreateClient() und verwenden diese auszuführen. Funktioniert gut, die API und MVC zu testen, scheint aber nicht verwendbar zu sein Angular2 SPAs mit Protractor :( – Sam

+0

Nach einigem schlug meinen Kopf gegen eine Wand zu testen, ich habe es mit WebHostBuilder (Kopieren zu arbeiten und den Code aus meinem Hauptprogramm anzupassen. cs), dank !! – Sam

-3

es erneut versuchen. Bei der Entwicklung meines Webservers läuft die ganze Zeit. Also sollten die e2e-Tests den Webserver nicht starten müssen? Wenn es um nächtliche Builds geht, muss der Server möglicherweise gestartet werden, bevor Tests ausgeführt werden. Überprüfen Sie TeamServer für nigtly Build-Setup. Hinweis: Wenn Sie sich angular2 homepage ansehen, sehen Sie, dass sie in einer Knotenumgebung arbeiten. Mayby Protractor.NET ist nicht der Weg zu gehen? Wenn Sie mit C# arbeiten möchten, empfehle ich ASP.NET mit JQuery. Wo Sie C# den HTML-Code rendern lassen.