2016-10-12 8 views
0

У меня есть тестовое тестирование, которое устанавливает тестовый сервер, создает запросы и проверяет ответ.Запустите OWIN TestServer от mstest.exe

Когда я запускаю те модульные тесты из Visual Studio Test Explorer, они отлично работают. Создается TestServer, выполняются запросы и возвращается правильный ответ.

Когда я запускаю тот же код из командной строки (на нашем сервере CI), TestServer всегда возвращает код состояния для «Not Found». Никаких других исключений нет. Существуют ли какие-либо конкретные команды, которые мне нужно добавить при запуске OWIN из командной строки?

Команда MSTest.exe выглядит следующим образом:

MSTest.exe /testcontainer:myTests.dll /resultsfile:testresults.trx 

Мой метод испытаний выглядит следующим образом:

[TestMethod] 
public async Task GetToken() 
{ 
    using (var server = TestServer.Create<TestStartupConfiguration>()) 
    { 
     var response = await server.CreateRequest("/TokenUrl").And(x => x.Content = new FormUrlEncodedContent(new[] 
     { 
      new KeyValuePair<string, string>("username", user.UserName), 
      new KeyValuePair<string, string>("password", user.Password), 
      new KeyValuePair<string, string>("grant_type", "password") 
     })).PostAsync(); 

     response.IsSuccessStatusCode.Should().BeTrue("this is the expected return value of an Access Token request"); 
     var responseString = await response.Content.ReadAsStringAsync(); 
     responseString.Should().NotBeNullOrWhiteSpace("the response of an Access Token request should not be empty"); 
    } 
} 

И, как я уже сказал, тест отлично работает в рамках Visual Studio. И все остальные модульные тесты выполняются из командной строки, как ожидалось.

Большое спасибо!

+0

Является ли ваша сборка для восстановления пакетов NuGet? – toadflakz

ответ

0

Я нашел решение своей проблемы. Ошибка NotFound возникла из-за того, что конфигурация OAuth, которую я хотел протестировать, имела свойство AllowInsecureHttp, заданное false при работе в качестве теста Unit. Я убедился, что AllowInsecureHttp - это true не только в режиме DEBUG, но и при выполнении теста единицы измерения.

Теперь он отлично работает.