"运行功能测试"任务和规范 - App.config被忽略?

时间:2017-01-03 15:37:05

标签: biztalk azure-pipelines azure-pipelines-release-pipeline

我已在TFS 2015更新2中创建了发布定义,如下所示:

RunFunc

我想将此作为我的CI流程的一部分。构建和单元测试在每个签入的专用BizTalk构建服务器上执行。每晚执行一次,这个(目前有问题的)版本应该部署到" DevTest" BizTalk服务器并执行集成测试。

一切顺利到最后"运行功能测试"任务。因此,删除BizTalk应用程序,然后以正确的顺序部署到目标服务器。 " IntegrationTests" assembly包含一些使用Transmock框架(http://transmock.codeplex.com/)的Specflow测试。这些测试的步骤包含在名为" Common.Commponents"的程序集中。这是从名为" Finance.IntegrationTests.dll"的测试程序集中引用的。在我的Dev VM上运行时测试通过。但是,当执行"运行功能测试"任务,我收到以下错误:

  

测试方法Finance.IntegrationTests.ASC_BacsFeature.BacsFileMoved抛出异常:NUnit.Framework.InconclusiveException:找不到一个或多个steps.using System的匹配步骤定义;使用TechTalk.SpecFlow;命名空间MyNamespace {[Binding] public class StepDefinitions { [给定(@"由sso app指定的输出路径'(。)'并设置'(。)'" )] public void GivenAnOutputPathSpecifiedBySsoAppAndSetting(string p0,string p1){ScenarioContext.Current.Pending();} [Given(@" 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。

&#34; Common.Components.dll&#34;通过GacUtil / I在发布的早期成功部署到GAC,所以我不确定为什么找不到它?

我已尝试直接在远程服务器上运行测试。我开始使用RDP,然后打开命令窗口并运行&#34; vstest.console Finance.IntegrationTests.dll&#34;。然后我收到警告说无法找到测试输入文件,然后是错误,因为&#34;无法加载文件或程序集&#39; nunit.framework&#39;&#34;。

我认为问题是,远程执行测试时未使用Integration Test程序集的App.config。这解释了为什么它试图使用NUnit而不是MSTest以及为什么它无法绑定到公共步骤 - 因为它们的位置是在节点中给出的。

有人知道如何在远程测试时使用App.config吗?

1 个答案:

答案 0 :(得分:0)

有几个问题。我忘记了app.config会被编译成finance.integrationtests.dll.config。配置中对dll的引用需要具有完整的强名称,而不仅仅是名称。