2

コア テンプレート パックの angular2 テンプレートに基づく ASP.NET Core プロジェクトがあります。メイン アプリに対して単体テストを実行するために、xunit と分度器を使用して 2 つ目のプロジェクトを追加しました。

どちらも単独で問題なく動作しますが、私が見逃している小さな点が 1 つだけあります。

分度器テストを実行したいときは、メイン プロジェクトを手動でホストする必要があります。メイン プロジェクトを手動でホストしないと実行されないため、ページにアクセスできないため、すべてのテストが失敗します。

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

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

奇妙なことに、ChromeDriver で Strg+F5 分度器を使用してメイン アプリを一度起動すると、アプリのホームページが表示されます。しかし、テストを機能させるには、手動で一度実行する必要があります...

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

2 に答える 2

-3

再試行しています。私が開発しているとき、私のウェブサーバーは常に実行されています。では、e2e テストでは Web サーバーを起動する必要はないのでしょうか? ナイトリー ビルドに関しては、テストを実行する前にサーバーを起動する必要がある場合があります。TeamServer を確認して、適切なビルドのセットアップを確認してください。注: angular2 ホームページを見ると、ノード環境で動作することがわかります。もしかしたら、Protractor.NET は適していないのでしょうか? C# を使用する場合は、JQuery を使用した ASP.NET をお勧めします。C# に html をレンダリングさせる場所。

于 2017-01-17T10:09:33.010 に答える