2017-01-16 2 views
1

У меня есть базовый проект ASP.NET, основанный на шаблоне angular2 из основного пакета шаблонов. Я добавил второй project with xunit and protractor для запуска модульного теста против моего основного приложения.Тестирование приложения ASP.NET Core с использованием Protractor в Visual Studio 2015

Оба работают хорошо в одиночку, есть только одна маленькая вещь, я скучаю:

Когда я хочу запустить транспортир тесты, мне нужно провести главный проект где-то вручную. Если я не размещаю основной проект вручную, он не запускается, поэтому все тесты не работают, потому что моя страница недоступна.

Мне, вероятно, нужно как можно скорее запустить основное приложение/проект из теста, но я понятия не имел, как это сделать. Все примеры для protractor работают с некоторыми уже запущенными Homepages, ни один из них не работает против какого-либо другого проекта.

Как начать основной проект 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); 
    } 

ответ

1

Вам необходимо самостоятельно разместить свой WebApp в методе SetUp.

С приложениями .NET 4.5 Owin вам необходимо использовать пакет Microsoft.Owin.Hosting с методом WebApp.Start.

С .NET Core вам необходимо использовать WebHostBuilder

+0

Спасибо, это звучит многообещающе! У вас нет намеков или ссылок, как это сделать? В противном случае я начну googling webhostbuilder. – Sam

+0

Я использую .NET Core, но WebHostBuilder на самом деле не размещает веб-сервер, кажется, что он только эмулирует его, поэтому я могу запустить _testserver.CreateClient() и использовать его. Хорошо работает для тестирования API и MVC, но, похоже, не подходит для тестирования Angular2 SPA с Protractor :( – Sam

+0

После того, как я ударил головой о стену, я получил ее для работы с помощью WebHostBuilder (копирование и адаптация кода из моей основной программы. cs), спасибо !! – Sam

-3

Повторное повторение. Когда я разрабатываю свой веб-сервер, он работает все время. Итак, для тестов e2e не нужно запускать веб-сервер? Когда дело доходит до ночных сборок, сервер, возможно, потребуется запустить до запуска тестов. Проверьте TeamServer на установку сборки niglty. Примечание. Если вы посмотрите на страницу angular2, вы увидите, что они работают в среде узлов. Mayby Protractor.NET - это не путь? Если вы хотите работать с C#, я предлагаю ASP.NET с JQuery. Где вы даете C# визуализировать html.

Смежные вопросы