2017-01-16 11 views
1

コアテンプレートパックのangular2テンプレートに基づいてASP.NETコアプロジェクトを取得しました。私は、私の主なアプリに対してユニットテストを実行するために2番目のproject with xunit and protractorを追加しました。私はどこかに手動でメインプロジェクトをホストする必要が分度器のテストを実行したい場合はVisual Studioで分度器を使用してASP.NETコアアプリケーションをテストする2015

だけではうまく動作し両方、私は欠場ただ一つの小さな事があります。メインプロジェクトを手動でホストしていないと実行されないので、ページに到達できないためすべてのテストが失敗します。

おそらくテストから何らかの形でメインのアプリケーション/プロジェクトを開始する必要がありますが、どうなるかわかりません。分度器のすべての例は、すでに実行中のいくつかのホームページに対して実行され、何も他のプロジェクトに対して実行されません。

テストプロジェクトからメインのASP.NETコアプロジェクトを開始してテストを実行するにはどうすればよいですか?

奇妙なことです:私は一度Strg + F5分度器を使ってChromeDriverでメインアプリを起動した後、アプリのホームページを見つけるでしょう。しかし、私は手動でテストを実施するために一度それを実行する必要があります...

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); 
    } 

答えて

1

SetUpメソッドでWebAppを自己ホストする必要があります。

.NET 4.5 Owinベースのアプリケーションでは、WebApp.StartメソッドでMicrosoft.Owin.Hostingパッケージを使用する必要があります。

.NET Coreでは、WebHostBuilderを使用する必要があります

+0

ありがとう、これは有望ですね!あなたはこれをどうするかのヒントやリンクはありませんか?さもなければ私はwebhostbuilderをグーグルで始めます。 – Sam

+0

私は.NET Coreを使用していますが、WebHostBuilderは実際にWebサーバーをホストしていません。ただ1つをエミュレートするように見えるので、_testserver.CreateClient()を実行して使用できます。 APIとMVCをうまくテストするにはうまくいきますが、分度器でAngular2 SPAをテストするのには使えないようです:( – Sam

+0

壁に頭を打つと、私はWebHostBuilder(メインプログラムからコードをコピーして適応させました。 – Sam

-3

もう一度試してみてください。いつ私のWebサーバーを開発している私は常に実行されています。したがって、e2eテストでWebサーバーを起動する必要はありませんか?夜間にビルドする場合は、テストを実行する前にサーバーを起動する必要があります。 TeamServerで、nigltyビルド設定を確認してください。 注:angular2ホームページを見ると、ノード環境で動作することがわかります。 Mayby Protractor.NETは行く方法ではありませんか? C#で作業したい場合は、ASP.NETとJQueryをお勧めします。 C#でhtmlをレンダリングできる場所。

関連する問題