2012-08-24 12 views
5

He configurado dos sesiones de prueba permanentes en ReSharper 7 en Visual Studio 2010/2012 - "Pasando" y "Fallando". Ejecuto la sesión Passing diariamente y puedo identificar rápidamente cualquier falla de regresión desde la última vez, en cuyo caso muevo esas pruebas a Failing, donde puedo trabajar cuando tengo tiempo. Funciona y es genial.¿Cómo puedo compartir sesiones de prueba de ReSharper Unit en un equipo?

El problema es que no puedo encontrar ninguna forma de exportar esas sesiones como una opción "Solución de equipos compartidos", como se sugiere en el ReSharper docs para configuraciones que pueda querer compartir en un equipo. Obviamente, sería beneficioso poder tener a otros en el tiempo disponibles de la misma estructura de sesión de prueba. Pero cuando cambio mis sesiones, solo parece actualizar el archivo 'PatientPortal.sln.DotSettings.user', no el de 'PatientPortal.sln.DotSettings'.

En ReSharper -> Opciones -> Unidad de Pruebas, he comprobado 'guardar y restaurar la unidad sesiones de prueba' y se han seleccionado Save-A - 'Solución [nombre] Equipo-compartida'

Debido a la dificultad que Estoy experimentando, sospecho que las sesiones de prueba unitarias de ReSharper no están diseñadas para ser algo que registran y comparten, pero me parece productivo hacerlo en este caso, así que ¿alguien sabe cómo hacer esto?

Respuesta

1

Debe usar categorías para esto. Si está utilizando NUnit, entonces se puede utilizar CategoryAttribute para marcar sus pruebas o accesorios de prueba con las categorías, así:

[Category("Failing")] public void MyTestProc() ... 

Puede especificar varias categorías para una prueba (sólo tiene que utilizar atribuir varias veces).Luego vaya a ReSharper | Unit Tests | Unit Tests y seleccione Group by -> Categories (o algo así, no lo recuerdo exactamente). Seleccione su categoría y presione un botón Run selected tests desde la barra de herramientas.

+0

Tenía la esperanza de evitar cambiar las pruebas reales, lo que hizo que las sesiones de prueba me resultaran atractivas, pero sí, creo que este es el único camino a seguir. No estoy usando NUnit, pero TestCategory ("Failing")] funciona dentro del espacio de nombres Microsoft.VisualStudio.TestTools.UnitTesting. Gracias. –

1

La respuesta corta es que tiene razón: las sesiones de prueba de nueva versión están pensadas para ser guardadas por usuario, y se guardan en el archivo .sln.DotSettings.user, y no se supone que los archivos .user deben estar marcados

Para la mayoría de los escenarios, no estoy seguro de que tenga sentido compartirlo en todo el equipo; si estoy TDDing una cierta clase, otros miembros del equipo no necesitan ver mis pruebas, ya que ganaron ' Estar trabajando en la misma área del código y, en cambio, tendrá sus propias sesiones. Un efecto dominó también será una gran cantidad de abandono (y alto riesgo de conflictos) en esa parte del archivo de configuración compartida.

Seleccionar "Guardar en" para un archivo de configuraciones compartidas del equipo solo causará la configuración de "guardar y restaurar sesiones de prueba de la unidad" en el archivo de configuraciones compartidas. No hará que las sesiones se guarden.

No he pasado demasiado tiempo pensando en ello, pero sospecho que podría escribir un complemento ReShaprer que guardara las sesiones bloqueadas en la configuración compartida del equipo. UnitTestSessionManager genera eventos cuando se crea o cierra una sesión, y la interfaz IUnitTestSession expone GetPersistentInfo y RestorePersistentInfo que le permiten obtener los datos para guardar y cargar. Entonces sería un caso de persistencia de los datos en el archivo de configuración en los momentos apropiados.

No puedo garantizar que no se generen conflictos en este archivo, aunque no sé en qué orden están los elementos cuando se serializan y los datos se serializan en un formato bastante denso, por lo que los cambios en las sesiones pueden ser dolorosos.

¿Quizás una forma diferente de trabajar sería mejor? ¿Cuáles son las dos sesiones que le muestran que no obtendría solo al ejecutar todas las pruebas en una sola sesión? ReSharper le permite mostrar pruebas pasajeras o simplemente fallidas. ¿Realmente ayuda al equipo a agrupar las pruebas para aprobar o reprobar? ¿Quizás agregando categorías a las pruebas que necesita corregir más tarde? ¿Marcarlos ignorados si no son lo suficientemente importantes como para arreglarlos ahora? Solucionarlos ahora?

+0

Gracias por la respuesta. "¿Cuáles son las dos sesiones que te muestran que no obtendrás simplemente ejecutando todas las pruebas en una sola sesión?" Si corro todas las pruebas juntas, con las ya rotas junto con las que pasan, entonces no veré fácilmente si las que pasaron ahora tienen alguna regresada. Segregarlos antes de ejecutarlos le permite ver rápidamente si se producen fallas nuevas, lo que se pone difícil cuando las ejecuta juntas. Por supuesto que debería arreglarlos todos y terminar con eso, pero siempre habrá un par de roturas que conoces y que arreglaré pronto. –

Cuestiones relacionadas