2017-01-03 27 views
0

Я создал определение выпуска в TFS 2015 обновления 2, как показано ниже:Задача «Запуск функциональных тестов» и Specflow - игнорируется приложение.config?

RunFunc

Я хочу использовать это как часть моего процесса CI. Сборка и модульные тесты выполняются на выделенном сервере сборки BizTalk для каждой регистрации. Выполненный в ночное время этот (в настоящее время проблематичный) выпуск должен быть развернут на сервере BizTalk «DevTest» и выполнить интеграционные тесты.

Все в порядке до последней задачи «Запуск функциональных тестов». Таким образом, приложения BizTalk удаляются, а затем развертываются на целевом сервере в правильном порядке. В сборке «IntegrationTests» содержатся несколько тестов Specflow, которые используют инфраструктуру Transmock (http://transmock.codeplex.com/). Шаги для этих тестов содержатся в сборке под названием «Common.Commponents». Об этом говорится в тестовой сборке под названием «Finance.IntegrationTests.dll». Тест проходит при запуске на моей виртуальной машине. Однако, при их выполнении задачи «Выполнить функциональные тесты», я получаю следующее сообщение об ошибке:

Test method Finance.IntegrationTests.ASC_BacsFeature.BacsFileMoved threw exception: NUnit.Framework.InconclusiveException: No matching step definition found for one or more steps.using System;using TechTalk.SpecFlow;namespace MyNamespace{ [Binding] public class StepDefinitions { [Given(@"an output path specified by sso app '(.)' and setting '(.)'")]public void GivenAnOutputPathSpecifiedBySsoAppAndSetting(string p0, string p1){ ScenarioContext.Current.Pending();} [Given(@"the inpu

Я поставил App.config моего тестового проекта, чтобы использовать MSTest, как показано ниже:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/> 
    </configSections> 
    <specFlow> 
    <!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config --> 
    <unitTestProvider name="MsTest"/> 
    <stepAssemblies> 
     <stepAssembly assembly="LCC.Integration.Common.Components" /> 
    </stepAssemblies> 
    </specFlow> 
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/></startup></configuration> 

Похоже, что когда тесты выполняются удаленно, используется NUnit, а не MSTest.

«Common.Components.dll» успешно развернут в GAC ранее в выпуске через GacUtil/I, поэтому я не уверен, почему его нельзя найти?

Я попытался выполнить тесты непосредственно на удаленном сервере. Я RDP'd, а затем открыл командное окно и запустил «vstest.console Finance.IntegrationTests.dll». Затем я получил предупреждения о том, что тестовые входные файлы не найдены, за которыми следуют ошибки, потому что «Не удалось загрузить файл или сборку« nunit.framework ».

Я думаю, что проблема заключается в том, что App.config сборки Integration Test не используется, когда тесты выполняются удаленно. Это объясняет, почему он пытается использовать NUnit, а не MSTest, а также почему он не может привязываться к общим шагам - потому что их местоположение указывается в узле.

Кто-нибудь знает, как я могу использовать приложение App.config при удаленном тестировании?

+0

Как вы используете Common.Components.dll для GAC? Каков результат, если вы запускаете тест на целевой тестовой машине/сервере (DevTest) вручную? –

+0

См. Правки для вопроса –

+0

Я не могу устанавливать пакеты SpecFlow.Nuit и SpecFlow.MsTest для проекта SpecFlow, только один из них и тест отлично работают через Run Functional Tests с пакетом SepcFlow.MsTest. Как вы их используете? Можете ли вы поделиться простым проектом, который может воспроизвести эту проблему на OneDrive? –

ответ

0

Было несколько проблем. Я забыл, что app.config будет скомпилирован в finance.integrationtests.dll.config. Ссылки на dll в конфигурации должны иметь полное сильное имя, а не просто имя.

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

  • Нет связанных вопросов^_^