tutorial toolsqa net framework español bdd specflow

bdd - toolsqa - specflow tutorial español



Error de flujo de especificaciones: ¿Es posible forzar pasos de regeneración? (8)

Haga clic derecho en el archivo .feature y elija "Ejecutar herramienta personalizada". Eso volverá a ejecutar el SpecFlowSingleFileGenerator que genera el código subyacente en el marco de prueba de su elección.

¿Es posible "forzar" la regeneración de definiciones de pasos para un archivo de características de flujo de especificaciones? He creado este archivo de características pero no puedo generar todos los pasos. Recibo un mensaje de que todos los pasos ya están vinculados, pero cuando ejecuto la prueba, recibo el error de que los mismos pasos no están vinculados. He borrado todo y he recreado la definición de funciones y pasos, pero ahora no puedo generar TODOS los pasos porque el flujo de especificaciones dice que ya están vinculados.


Me he encontrado con el mismo problema. Al reiniciar Visual Studio se realizará el trabajo: SpecFlow almacena en caché los enlaces en algún lugar.

Esto me parece un error. Se puede reproducir moviendo la clase de pasos generada. Creo que cuando hace clic en "Generar definiciones de pasos", el motor llega a la memoria caché y no comprueba el archivo real.

Estoy probando esto en Visual Sudio 2013 con el complemento SpecFlow en un proyecto dll simple y sencillo.


Puede regenerar todas las clases de prueba de archivos de características utilizando la herramienta specflow.exe proporcionada por specflow.exe .

Suponiendo que SpecFlow se haya instalado a través de NuGet y se encuentre en el directorio ./packages relativo a su directorio actual, puede ejecutar, en el terminal, el comando

./packages/SpecFlow.X.Y.Z/tools/specflow.exe generateall path/to/myfile.csproj

que regenerará todas las pruebas unitarias del archivo de características. Como indica la página vinculada, puede agregar el indicador /force para forzar la regeneración de todas las pruebas.


Reiniciar VS es engorroso, especialmente si tiene un proyecto grande.

Cambiamos el código del complemento de flujo de especificaciones ( https://github.com/techtalk/SpecFlow ). Se agregó un comando que reinicializa el alcance (consulte el método Garantía de inicialización) y limpia el archivo empaquetado.

Ahora simplemente hacemos clic en el botón cuando se cambian los enlaces.


Si está utilizando el complemento SpecFlow en Visual Studio , puede ver qué líneas tienen enlaces en lugar de las que no lo hacen debido al resaltado. Además, también puede presionar F12 para ir a los elementos que tienen enlaces, generar un enlace que se puede pegar donde no existe.

Además, no he visto este proceso de generar todos los pasos de una sola vez, tal como se describe anteriormente. Para ser honesto, parece un poco contrario a la intuición, ya que SpecFlow ya tiene condiciones de advertencia específicas sobre cuándo no existen los pasos.


Si ha tenido problemas con los enlaces de Specflow, como:

  • los pasos no son reconocidos
  • no se encontraron enlaces

y reiniciar Visual Studio o regenerar los enlaces no funciona, entonces la solución de problemas de Visual Studio de SpecFlow tiene varias soluciones para Visual Studio 2013 y 2015.


SpecFlow crea un archivo .cache en su carpeta Temp que contiene estos enlaces para acelerar el proceso. Si ese archivo se sale de control, puede eliminarlo :

  1. Salir de Visual Studio.
  2. Abra el Explorador de Windows.
  3. En la barra de direcciones, escriba% TEMP% y presione Enter para ir a su carpeta temporal.
  4. Encuentre los archivos cuyos nombres comienzan con "specflow-stepmap-YourProjectName" con una extensión .cache.
  5. Eliminar esos archivos.
  6. Vuelve a iniciar Visual Studio.

Si hace esto, tomará un poco de tiempo para que SpecFlow regenere los enlaces. Hasta que se haga esto, si hace clic con el botón derecho en un paso y selecciona "Ir a la definición de paso", Visual Studio responderá "Los enlaces de pasos aún se están analizando. Espere".

Lo más comúnmente uso para el caso opuesto, donde SpecFlow muestra que nada está vinculado aunque existan los pasos. Pero creo que es probable que también funcione para su caso.


  • Cerrar Visual Studio
  • Abra el archivo .csproj en un editor de texto como NotePad ++
  • Suponiendo que está utilizando SpecFlow 2.2.0
  • Suponiendo que sus características están en ./Features
  • En el área <Project> debería ver algunos comandos <Import> , agregue esto:

<Import Project="../packages/SpecFlow.2.2.0/tools/TechTalk.SpecFlow.targets" Condition="Exists(''../packages/SpecFlow.2.2.0/tools/TechTalk.SpecFlow.targets'')" /> <!--<ItemGroup> --> <!-- include all feature files from the folder "FeatureFiles" --> <!-- <None Include="Features/**/*.feature" /> </ItemGroup> <Target Name="AfterUpdateFeatureFilesInProject"> --> <!-- include any files that specflow generated into the compilation of the project --> <!-- <ItemGroup> <Compile Include="@(SpecFlowGeneratedFiles)" /> </ItemGroup> </Target>-->

Inserte este fragmento de código justo dentro de la parte de <Project></Project> de usted .csproj, junto a los otros <Import> si puede. La parte comentada es importante, regenerará los archivos .feature.cs

  • Vuelva a abrir Visual Studio
  • Cada vez que construyas los archivos .feature.cs serán renegerados
  • Es posible que desee agregar *.feature.cs a su .gitignore después de esto