2012-09-25 15 views
19

Tengo atributos en ciertas pruebas que, idealmente, no quiero ejecutar en cada compilación. La mayoría de mis pruebas son pruebas unitarias normales y quiero que se ejecuten en cada compilación.¿Cómo se excluyen ciertas pruebas en el Visual Studio 2012 Test Runner?

Entonces, ¿cómo puedo excluir una prueba por categoría o tipo de proyecto?

Por ejemplo, me gustaría excluir CodedUItests:

[CodedUITest] 
public class SearchViewTests 

... o excluir pruebas en un determinado TestCategory:

[TestMethod] 
[TestCategory("Database Integration")] 
public void ContactRepositoryGetByIdWithIdExpectCorrectContact() 

En particular, quiero excluir las pruebas de interfaz de usuario codificados ya que interrumpen mi capacidad para seguir trabajando, mientras que todas las otras pruebas se ejecutarán felizmente en el fondo sin molestarme.

+0

¿Está utilizando un servidor de compilación? – Cybermaxs

+0

Este es el Test Runner local integrado en Visual Studio 2012, por lo que se ejecuta en contra del código que todavía no me he comprometido. Sé cómo hacer lo que quiero con MSBuild, pero no con el Test Runner local. – Fenton

Respuesta

6

La única "solución" (o mejor solución) que encontré para trabajar es especificar un filtro "FullName". Básicamente lo general estructurar mi solución como

  • ProjectA
  • ProjectA.UnitTests
  • ProjectA.IntegrationTests

y así sucesivamente. Ahora puedo especificar un filtro en el Explorador de prueba como FullName: "UnitTests" que parece funcionar.
(lo que esperaba para ser capaz de utilizar una expresión regular en el nombre de la búsqueda pero no parece ser compatible.)

enter image description here

+0

¡Esto podría funcionar mientras tanto! – Fenton

+0

La nota de Todd sobre la función próximamente es una gran noticia, pero esta es la solución provisional que funciona mejor para mí ya que puedo filtrar 'FullName:" MyProject.Integration.Tests "' para ver las pruebas de integración y 'FullName:" MyProject .Tests '' para ver las pruebas unitarias. – Fenton

3

Puede usar el filtro de búsqueda en Unit Text Explorer.

unit test explorer

En el nuevo Exlorer de prueba enviados con el año 2012, se puede pruebas de grupo por 'Resultados de la prueba', 'nombre de archivo', etc ... pero en RTM construir grupo/búsqueda por 'TestCategory' no está presente de Test Explorer. Sin embargo, hay un filtro en la línea de comandos y TeamBuild basado en TestCategory (Ejecución de pruebas de unidades selectivas en VS 2012 RC con TestCaseFilter) en VS2012.

De un miembro del equipo de desarrollo de VS, entendieron la importancia de esta característica faltante. Está en la lista de espera y debería estar disponible en versiones/actualizaciones completas.

El blog siguiente proporciona más detalles: http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx

0

Ha visto este artículo? How to: Group and Run Automated Tests Using Test Categories

No he intentado esto con VS 2012, pero aún podría ser válido. Por lo que pude ver, no hay referencias a TFS, por lo que esto debería apuntar al corredor de prueba VS normal.

+2

No creo que esto esté en VS2012: la Vista de prueba ha sido reemplazada por Test Explorer y no parece ser consciente de la categoría, aunque la respuesta de Cybermaxs sugiere que el equipo VS Dev pueda agregarla. El artículo equivalente de VS2012 sugiere que solo está disponible actualmente a través de la línea de comandos: http://msdn.microsoft.com/en-us/library/dd286683%28v=vs.110%29.aspx – Fenton

3

Hay un filtro se puede aplicar en el Explorador de prueba. Rasgo: "UnitTest" este filtro recogerá solo las pruebas con el atributo TestCategory ("UnitTest") ignorando las demás.

42

TL; DR versión:

Test explorer showing -Trait:"CategoryName" filter

Otras respuestas han comentado sobre soluciones alternativas y uso de las opciones Traits más recientes. Sin embargo, ninguno le dice exactamente cómo excluir pruebas para un rasgo. Para ello, basta con utilizar un - (menos) para negar un filtro en el cuadro de búsqueda, por ejemplo .:

-Trait:"DatabaseIntegration" 

Esto excluirá todas las pruebas con ese rasgo. El MSDN documentation on these features tiene la siguiente explicación:

Para excluir un subconjunto de los resultados de un filtro, utilizar la siguiente sintaxis:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

Por ejemplo,

FullName:"MyClass" - FullName:"PerfTest"

devuelve todas las pruebas que incluyen "MyClass" en su nombre, excepto aquellas que también incluyen "PerfTest" en su nombre.

1

Llegué un poco tarde a la fiestaTenía el mismo problema por el que todos los desarrolladores se enfrentaban a la disruptiva CodedUI cuando ejecutaban todas las pruebas unitarias en una solución. Mi solución es agregar lo siguiente a la AssemblyInitializer del Proyecto CodedUI:

if(!ConfigurationManager.AppSettings["MachinesToRunCodedUI"].Split(',').Contains(Environment.MachineName)) 
     Assert.Inconclusive("CodedUI Tests are skipped."); 

Sólo cuando una máquina es parte de esa lista MachinesToRunCodedUI, se ejecutará las pruebas CodedUI.

Cuestiones relacionadas