我有一个基于核心模板包中angular2模板的ASP.NET核心项目。我添加了第二个项目,使用xunit和量角器对我的主应用程序进行单元测试。
两者单独工作都很好,只有一件小事我很怀念:
当我想运行量角器测试时,我需要在某个地方手动主持主项目。如果我不手动主持主项目,它就不会运行,所以所有测试都会失败,因为我的页面无法访问。
我可能需要从测试中以某种方式启动主应用程序/项目,但我不知道如何启动。量角器的所有例子都是针对一些已经在运行的主页运行的,没有一个是针对其他项目运行的。
如何从测试项目启动主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(@"testChromeDriver");
_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);
}
您需要在SetUp方法中自托管WebApp。
对于基于.NET 4.5 Owin的应用程序,您需要将Microsoft.Owin.Hosting包与WebApp.Start方法一起使用。
使用.NET Core,您需要使用WebHostBuilder
重试。当我开发我的网络服务器时,它一直在运行。所以e2e测试应该不需要启动Web服务器?当涉及到夜间构建时,可能需要在运行测试之前启动服务器。请检查TeamServer的nilty内部版本设置。注意:如果你查看angular2主页,你会发现它们在节点环境中工作。Mayby Protractor.NET不是一条路吗?如果你想使用C#,我建议你使用带有JQuery的ASP.NET。让C#渲染html的位置。