我有一个 VS2010 单元测试项目设置为使用 SpecFlow 1.8.1 和 mstest。为了让 SpecFlow 单元测试正常工作,我做了以下工作:-
我在我的项目中添加了对以下文件的引用:-
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll TechTalk.SpecFlow.dll
请注意,TechTalk.SpecFlow.dll 已添加到我的项目中,并且引用指向该文件。
我已将 TechTalk.SpecFlow.dll 引用的“复制本地”属性设置为 True。
我还添加了一个 App.Config,将“MsTest.2010”指定为提供者,并为 SpecFlow 功能重新生成了所有代码隐藏。
在我的 VS2010 中一切正常,测试在 SpecFlow 测试运行器和 mstest 测试运行器中都成功运行。但是当我尝试在 TFS 2008 中运行 mstests(使用 .vsmdi 测试列表文件)时,它失败了,出现以下异常:-
Class Initialization method MyNamespace.MyTestFeature.FeatureSetup threw exception.
System.Configuration.ConfigurationErrorsException:
System.Configuration.ConfigurationErrorsException: An error occurred creating the
configuration section handler for specFlow: Could not load file or assembly
'TechTalk.SpecFlow' or one of its dependencies. The system cannot find the file
specified. (D:\Projects\TestProject\TestResults\administrator_MYPC 2012-06-27
18_30_05_Any CPU_Debug\Out\TestProject.DLL.config line 4) --->
System.IO.FileNotFoundException: Could not load file or assembly 'TechTalk.SpecFlow'
or one of its dependencies. The system cannot find the file specified.
请注意,TFS 很好地构建了项目,并且它在同一个项目中运行其他单元测试(正常的 mstests,而不是 SpecFlow)没有问题。它仅在 SpecFlow 测试运行时失败。
那么我做错了什么?
编辑:我的 App.Config 文件的内容如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section
name="specFlow"
type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/>
</configSections>
<specFlow>
<unitTestProvider name="MsTest.2010" />
<runtime detectAmbiguousMatches="true"
stopAtFirstError="false"
missingOrPendingStepsOutcome="Inconclusive" />
<trace traceSuccessfulSteps="true"
traceTimings="false"
minTracedDuration="0:0:0.1" />
</specFlow>
</configuration>