工作与specflow的最新版本,当我运行我的脚本,我得到的结果集不能启动,并一直在这一个星期.自动化脚本运行完成,但它带来了这个错误和测试失败.specflow版本3.1.97是和视觉工作室是2019年。我已经把它缩小到一个简单的测试,仍然失败,它似乎有一些做specflow。我不想不得不创建一个新的解决方案,并重新开始,我已经写了很多测试,但不能进一步,因为报告总是会失败,由于这个错误。我已经在网上查过了。我已经尝试了不同的解决方案,包括 https:/github.comSpecFlowOSSSpecFlowissues1851。 等,但无济于事。我已经下调了specflow,specfow.tools.MsBuild.Generation,nunit的版本,但还是一样。如果我创建一个新的解决方案,并添加这些依赖关系,它似乎是好的,做一个快速的测试是工作正常。
特征文件。
@Settings About
Scenario: About Screen
Given user is already logged in
步骤定义。
[Given(@"user is already logged in")]
public void GivenUserIsAlreadyLoggedIn()
{
Assert.IsTrue(true);
}
我在将我的特性文件移动到共享汇编后,收到了这个错误信息。 错误的原因是SpecFlow.MSBuild生成的静态初始化方法在启动时没有被调用。我通过链式调用顶层测试汇编中相应的初始化方法来解决。
虽然你的问题原因可能不同,但我怀疑你可以用同样的过程来诊断问题。
在你的测试项目的obj文件夹中,应该有一个名为MsTest.AssemblyHooks.cs的文件。 将这个文件移到主项目文件夹中,并包含在项目中。
在csproj项目文件中添加以下xml。这将关闭自动生成hooks文件)。
<PropertyGroup>
<GenerateSpecFlowAssemblyHooksFile>false</GenerateSpecFlowAssemblyHooksFile>
</PropertyGroup>
然后你可以在初始化代码上加一个断点并进行调试。(你可能会得到异常,或者初始化可能没有被调用。)
注意--你可能可以在原地不动的情况下调试初始化代码。 在我的情况下,我需要修改代码,因此是一个永久的非生成版本。
对于其他试图将功能文件拆分到共享项目中的人来说,你还需要更新app.config中的
<configSections>
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow">
<configSections>
<specFlow>
<stepAssemblies>
<stepAssembly assembly="[TODO - SharedAssemblyName]" />
<stepAssemblies>
</specFlow>