Я создал определение выпуска в TFS 2015 обновления 2, как показано ниже:Задача «Запуск функциональных тестов» и Specflow - игнорируется приложение.config?
Я хочу использовать это как часть моего процесса 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 при удаленном тестировании?
Как вы используете Common.Components.dll для GAC? Каков результат, если вы запускаете тест на целевой тестовой машине/сервере (DevTest) вручную? –
См. Правки для вопроса –
Я не могу устанавливать пакеты SpecFlow.Nuit и SpecFlow.MsTest для проекта SpecFlow, только один из них и тест отлично работают через Run Functional Tests с пакетом SepcFlow.MsTest. Как вы их используете? Можете ли вы поделиться простым проектом, который может воспроизвести эту проблему на OneDrive? –