在 Visual Studio 2015 年使用量角器测试 ASP.NET 核心应用
Testing ASP.NET Core app using Protractor in Visual Studio 2015
我有一个 ASP.NET 核心项目,该项目基于核心模板包中的 angular2 模板。我针对我的主应用程序添加了第二个 project with xunit and protractor 到 运行 单元测试。
两者单独使用都很好,只有一件小事我想念:
当我想 运行 量角器测试时,我需要手动将主项目托管在某个地方。如果我不手动托管主项目,它就不会 运行,因此所有测试都会失败,因为我的页面无法访问。
我可能需要以某种方式从测试中启动主应用程序/项目,但我不知道如何启动。量角器的所有示例 运行 针对一些已经 运行 的主页,none 针对其他一些项目 运行。
如何从我的测试项目启动主要 ASP.NET 核心项目,以便 运行 正在测试?
奇怪的是:在我启动主应用程序后,使用带有 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);
}
正在重试。当我开发我的网络服务器时,我的网络服务器一直是 运行。那么端到端测试不需要启动网络服务器吗?当涉及到夜间构建时,服务器可能需要在测试运行之前启动。检查 TeamServer 的构建设置。
注意:如果您查看 angular2 主页,您会发现它们在节点环境中工作。 Mayby Protractor.NET 是不是该走的路?如果您想使用 C#,我建议 ASP.NET 和 JQuery。让 C# 呈现 html 的位置。
您需要在您的 SetUp 方法中 self-host 您的 WebApp。
对于基于 .NET 4.5 Owin 的应用程序,您需要使用 Microsoft.Owin.Hosting 包和 WebApp.Start 方法。
使用 .NET Core,您需要使用 WebHostBuilder
我有一个 ASP.NET 核心项目,该项目基于核心模板包中的 angular2 模板。我针对我的主应用程序添加了第二个 project with xunit and protractor 到 运行 单元测试。
两者单独使用都很好,只有一件小事我想念:
当我想 运行 量角器测试时,我需要手动将主项目托管在某个地方。如果我不手动托管主项目,它就不会 运行,因此所有测试都会失败,因为我的页面无法访问。
我可能需要以某种方式从测试中启动主应用程序/项目,但我不知道如何启动。量角器的所有示例 运行 针对一些已经 运行 的主页,none 针对其他一些项目 运行。
如何从我的测试项目启动主要 ASP.NET 核心项目,以便 运行 正在测试?
奇怪的是:在我启动主应用程序后,使用带有 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);
}
正在重试。当我开发我的网络服务器时,我的网络服务器一直是 运行。那么端到端测试不需要启动网络服务器吗?当涉及到夜间构建时,服务器可能需要在测试运行之前启动。检查 TeamServer 的构建设置。 注意:如果您查看 angular2 主页,您会发现它们在节点环境中工作。 Mayby Protractor.NET 是不是该走的路?如果您想使用 C#,我建议 ASP.NET 和 JQuery。让 C# 呈现 html 的位置。
您需要在您的 SetUp 方法中 self-host 您的 WebApp。
对于基于 .NET 4.5 Owin 的应用程序,您需要使用 Microsoft.Owin.Hosting 包和 WebApp.Start 方法。
使用 .NET Core,您需要使用 WebHostBuilder