我已在TFS 2015更新2中创建了发布定义,如下所示:
我想将此作为我的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吗?
答案 0 :(得分:0)
有几个问题。我忘记了app.config会被编译成finance.integrationtests.dll.config。配置中对dll的引用需要具有完整的强名称,而不仅仅是名称。