2

我有一个基于核心模板包中的 angular2 模板的 ASP.NET Core 项目。我添加了带有 xunit 和量角器的第二个项目来对我的主应用程序运行单元测试。

两者都很好地单独工作,我错过了一件小事:

当我想运行量角器测试时,我需要手动在某处托管主项目。如果我不手动托管主项目,它就不会运行,所以所有测试都会失败,因为我的页面无法访问。

我可能需要从测试中以某种方式启动主应用程序/项目,但我不知道如何。量角器的所有示例都针对一些已经运行的主页运行,没有一个针对其他项目运行。

如何从我的测试项目启动主 ASP.NET Core 项目,以便它运行以进行测试?

奇怪的是:在我使用 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);
  }
4

2 回答 2

2

您需要在您的 SetUp 方法中自行托管您的 WebApp。

对于基于 .NET 4.5 Owin 的应用程序,您需要使用带有 WebApp.Start 方法的 Microsoft.Owin.Hosting 包。

使用 .NET Core,您需要使用 WebHostBuilder

于 2017-01-17T13:00:45.887 回答
-3

再试一次。当我开发我的网络服务器时,我一直在运行。那么e2e测试应该不需要启动网络服务器吗?对于每晚构建,可能需要在测试运行之前启动服务器。检查 TeamServer 以获取 niglty 构建设置。注意:如果您查看 angular2 主页,您会发现它们在节点环境中工作。Mayby Protractor.NET 不是要走的路吗?如果你想使用 C#,我建议使用 ASP.NET 和 JQuery。让 C# 呈现 html 的位置。

于 2017-01-17T10:09:33.010 回答