我正在尝试使用带有CI的specflow,并且将生成的.cs文件检查到源代码管理中似乎是错误的。
我已尝试编辑.csproj文件,以便在feature.cs文件的jupyter nbconvert --to python 'example.ipynb' --template=mytemplate.tpl
步骤中设置<BeforeBuild>True</BeforeBuild>
,但似乎没有任何区别。我可以找到重新生成.feature.cs文件的唯一方法是使用visual studio,但我想在CI构建服务器上使用msbuild。
我还尝试添加一个Compile
目标,如specflow doc所述,但也没有创建.feature.cs文件,无论是否有.csproj中的.feature.cs文件文件。
(This question建议在MSDN上阅读“指定自定义构建工具”,但我看不到任何有用的内容。schema definition for msbuild on MSDN甚至没有提及AfterUpdateFeatureFilesInProject
元素AFAICT。 )
答案 0 :(得分:1)
您可以在此处找到使用MSBuild生成文件背后代码的文档:http://specflow.org/documentation/Generate-Tests-from-MsBuild/
答案 1 :(得分:1)
我按照说明进行操作 http://specflow.org/documentation/Generate-Tests-from-MsBuild/,但有一些缺失的步骤。
这些路径应该是相对路径,我的指向NuGet packages \文件夹,我在那里为我的项目引用SpecFlow。
另外,我在AfterUpdateFeatureFilesInProject目标中添加了一个步骤,将生成的文件移动到已知位置,以便轻松查看它们。我的GIT存储库中会忽略此文件夹。
<PropertyGroup>
<SpecFlowTasksPath>..\packages\SpecFlow.2.2.0\tools\specflow.exe</SpecFlowTasksPath>
</PropertyGroup>
<Import Project="..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.tasks" Condition="Exists('..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.tasks')" />
<Import Project="..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.targets" Condition="Exists('..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.targets')" />
<Target Name="AfterUpdateFeatureFilesInProject">
<Move SourceFiles="@(SpecFlowGeneratedFiles)" DestinationFolder="Features.Generated" OverwriteReadOnlyFiles="true" />
<ItemGroup>
<!-- include any files that specflow generated into the compilation of the project -->
<Compile Include="Features.Generated\**\*.cs">
<Visible>true</Visible>
<!-- the generated files can be hidden in Visual Studio -->
</Compile>
</ItemGroup>
</Target>