代码背后的specflow语法错误或代码重复

时间:2019-02-20 18:26:33

标签: c# msbuild specflow

我有一个包含两个项目的解决方案。我的解决方案中有3个类别的项目。第一类仅包括.feature文件。第二类仅包括绑定。第三个包括驱动程序,该驱动程序包括在绑定中使用的一组功能,用于与我正在测试的软件接口进行通信。

构建解决方案时,文件(.feature.cs)背后的某些代码已损坏。以下是构建解决方案后得到的屏幕截图:

在Visual Studio中生成错误

Build errors in Visual Studio

下面是一个损坏的.feature.cs文件的示例:

    // ------------------------------------------------------------------------------
//  <auto-generated>
//      This code was generated by SpecFlow (http://www.specflow.org/).
//      SpecFlow Version:2.3.0.0
//      SpecFlow Generator Version:2.3.0.0
// 
//      Changes to this file may cause incorrect behavior and will be lost if
//      the code is regenerated.
//  </auto-generated>
// ------------------------------------------------------------------------------
#region Designer generated code
#pragma warning disable
namespace AcceptanceTests.Controllers.Images
{
    using TechTalk.SpecFlow;


    [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "2.3.0.0")]
    [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()]
    public partial class GetImagesFeature
    {

        private static TechTalk.SpecFlow.ITestRunner testRunner;

        pr// ------------------------------------------------------------------------------
//  <auto-generated>
//      This code was generated by SpecFlow (http://www.specflow.org/).
//      SpecFlow Version:2.3.0.0
//      SpecFlow Generator Version:2.3.0.0
// 
//      Changes to this file may cause incorrect behavior and will be lost if
//      the code is regenerated.
//  </auto-generated>
// ------------------------------------------------------------------------------
+ Designer generated code

注意这里有重复的代码块。似乎重新生成的代码已添加到旧代码中间的某个位置(我们看到的是“ pr // ---”)。

另一个示例是一个语法错误的后台代码文件,例如缺少括号或格式不正确。

解决方案中的所有测试项目都具有以下软件包:

  • MSTest.TestAdapter v1.3.2
  • MSTest.TestFramework v1.3.2
  • SpecFlow v2.3.1
  • SpecFlow.MsTest v2.3.1
  • .Net Framework 4.6.2

单元测试提供者是mstest.v2。

到目前为止,我已经尝试在%TEMP%中清除SpecFlow文件。我确保所有项目都安装了相同版本的SpecFlow。我已经清理了解决方案并完成了重建。如果我在每个功能文件上单独运行自定义工具,我将永远不会遇到这个问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

此问题是由具有长名称,嵌套文件夹和长测试场景描述的项目引起的。我在一个功能文件中缩短了场景描述,这些功能文件的背后代码经常被破坏,然后问题消失了。