2011-11-05 20 views
14

Acabo de (hoy) intenté SpecFlow por primera vez. Estoy jugando creando una nueva biblioteca de clases en VS2010 Pro y agregando un archivo de definición de funciones de SpecFlow.SpecFlow que usa incorrectamente NUnit

La cosa es que la integración no parece funcionar correctamente, con una variedad de errores diferentes. Seleccioné a MsTest como el corredor de prueba, porque no me molestaría invocar NUnit (me gustaría usar NUnit a largo plazo, pero de momento solo quiero que funcione un código BDD). Sin embargo, los archivos de código generados continúan haciendo referencia a NUnit, lo que obviamente es incorrecto, ya que acabo de decirle a SpecFlow que se ejecute con MsTest. He hecho todo lo posible para invocar nuevamente la generación de código, incluida la creación de un nuevo proyecto de biblioteca de clase con la opción MsTest seleccionada en Herramientas> Opciones> SpecFlow.

Si dejo el campo del corredor de pruebas establecido en 'Auto' y hago clic con el botón derecho en un archivo de características, selecciono 'Ejecutar escenarios de SpecFlow' Aparece el mensaje de error "No se pudo encontrar el corrector de prueba coincidente".

Si cambio el campo del corredor de prueba a MsTest, aparece un mensaje de error diferente al hacer lo mismo: "Referencia de objeto no configurada para una instancia de un objeto". No me sorprende esta, ya que todavía está intentando ejecutar pruebas de NUnit a pesar de que he pedido explícitamente MsTest, aunque obviamente no debería ser nula y presentar eso al usuario.

¿Qué estoy haciendo mal? La documentación no es útil, y hasta donde puedo ver, no hay preguntas frecuentes.

edición # 1: He establecido que el ajuste real que estoy buscando se proporciona el uso de App.Config utilizando el campo <unitTestProvider name="MsTest" />. Puedo ver lo que sucedió: el campo en el menú de opciones de Visual Studio no parece modificar el proyecto en el que está trabajando actualmente. La cosa es que esto hace que parezca que ese campo no hace nada en absoluto. Ahora he convencido a SpecFlow de que genere clases MsTest y se ejecute utilizando el corredor MSTest.

Así que ahora la pregunta se transforma en una levemente diferente: ¿Qué (si acaso) funciona el campo Herramientas> Opciones> SpecFlow> Herramienta de prueba de corredor?

Respuesta

1

Nunca pude obtener SpecFlow trabajando desde Visual Studio, pasé algún tiempo trabajando en él, pero nunca voy a ninguna parte. Aunque encontré instrucciones these sobre la configuración de NUnit en Visual Studio 2010 y utilizo este atajo para ejecutar mis pruebas SpecFlow con buenos resultados.

En general utilizamos PowerShell para ejecutar muchas pruebas y pude incorporar el corredor de línea de comandos NUnit y el generador de informes SpecFlow en un solo script que puedo ejecutar fácilmente.

+0

¡Un gran consejo, gracias! Inicialmente configuré el botón de menú porque parecía tan útil, por lo que, independientemente de esta línea de investigación, me proporcionó un práctico beneficio lateral. Lástima de SpecFlow, parece que no soy el único que ha tenido problemas con lo que se supone que debe hacer. El producto real funciona, pero la integración VS no es del todo correcta. –

+0

Sí, ojalá estuviera más integrado, pero estoy de acuerdo con eso por ahora. Su uso supera ese beneficio para mí en este momento. Me alegra que la punta ayude! – MichaelF

+0

¿Ha ejecutado el instalador de flujo de datos o lo ha agregado a su proyecto con NuGet? El instalador instalará todos los componentes de integración, como la integración de Visual Studio, donde la instalación nuget solo agrega las referencias necesarias. –

9

Con VS2010, el valor correcto es MsTest.2010 no MsTest como está documentado. Cambiar su app.config (para el conjunto de prueba) y no tendrán ningún problema (al menos con SpecFlow 1,8)

<?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" /> 
     <!-- For additional details on SpecFlow configuration options see https://github.com/techtalk/SpecFlow/wiki/Configuration --> 
    </specFlow> 
</configuration> 
7

En respuesta a su última pregunta. ¿Cuál es la configuración "Herramientas> Opciones> SpecFlow> Prueba del Runner Tool" esta configuración controla lo que realmente ejecutará las pruebas, no lo que generará el código de prueba. Si está configurado en automático, creo que verá el archivo App.config donde ha establecido unitTestProvider para determinar cuál es la mejor herramienta para ejecutar las pruebas. Un corredor de prueba alternativo hecho por los mismos tipos que SpecFlow es SpecRun http://www.specrun.com/

Así que cuando vaya a ejecutar las pruebas, usará esta opción.Como ha descubierto, aunque el generador de códigos usa el archivo de configuración para determinar qué tipo de prueba debe generar (mstest/nunit ...)

Si ejecutó el instalador de specfow (https://github.com/downloads/techtalk/SpecFlow/SpecFlowSetup_v1.8.1.msi) para instalar todos los componentes de Visual Studio Integración cuando Cambias el archivo App.config que normalmente te pedirá que regenere las funciones con el nuevo proveedor. La forma manual de hacerlo es hacer clic con el botón derecho en la característica y seleccionar "Ejecutar herramienta personalizada"

En cuanto a la documentación, ¿ha encontrado la wiki de git hub? https://github.com/techtalk/SpecFlow/wiki/Documentation

2

Estamos utilizando ReSharper como corredor para las pruebas de aceptación de SpecFlow; funcionó bien desde el primer momento. Aunque ReSharper no es gratis, pero vale la pena cada centavo ...

Cuestiones relacionadas