2017-01-16 58 views
1

我有一个基于来自核心模板包的angular2模板的ASP.NET Core Project。我添加了第二个project with xunit and protractor对我的主应用程序运行单元测试。在Visual Studio 2015中使用量角器测试ASP.NET Core应用程序

很好两者单独工作,有我错过只是一个很小的事情:

当我要运行的量角器测试中,我需要手动地方举办的主要项目。如果我没有手动托管主项目,它将无法运行,所以所有测试都会失败,因为我的页面无法访问。

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

如何从我的测试项目启动主要的ASP.NET Core Project,因此它正在运行测试?

奇怪的是:在我启动主应用程序后,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); 
    } 

回答

1

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

使用基于.NET 4.5 Owin的应用程序,您需要将Microsoft.Owin.Hosting包与WebApp.Start方法一起使用。

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

+0

谢谢,这听起来很有希望!你不会碰巧有任何提示或链接如何做到这一点?否则,我将开始使用Google Host Builder进行搜索。 – Sam

+0

我使用.NET Core,但WebHostBuilder并没有真正托管一个Web Server,它似乎只模拟一个,所以我可以运行_testserver.CreateClient()并使用它。很好地测试API和MVC,但似乎不可用于测量Angular2 SPAA与量角器:( – Sam

+0

在我的头撞墙后,我使用WebHostBuilder工作(从我的主程序复制和修改代码)。 cs),谢谢!! – Sam

-3

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

相关问题