2012-10-01 12 views
29

Estoy intentando realizar una prueba unitaria de una Biblioteca de clases portátil que he creado y quiero asegurarme de que se está probando con el mismo subconjunto de infraestructura al que apunta.¿Cómo se crea un conjunto de prueba unitaria para una biblioteca de clases portátil .NET?

Per the Visual Studio ALM + Team Foundation Server blog, el marco de prueba de la unidad MSTest se convirtió a PCL en Visual Studio 2012 RC; sin embargo, no puedo crear una biblioteca de clases portátil y luego hacer referencia al marco MSTest en VS2012 RTM.

  • La búsqueda en el cuadro de diálogo "Referencias" me muestra que no hay componentes de prueba de unidad registrados como compatibles con PCL.
  • Agregar una referencia GAC ​​manual en el archivo de proyecto a Microsoft.VisualStudio.QualityTools.UnitTestFramework produce un error de generación de referencia no encontrado.
  • Al agregar una referencia de ensamblaje directo manual a C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll se produce una advertencia de compilación que indica que el ensamblaje UnitTestFramework hace referencia a una versión mscorlib incompatible.

he encontrado (gracias a una respuesta temprana) que hay un tipo de proyecto Unit Test Library (Windows Store apps) que hace referencia a un conjunto diferente MSTest en C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll. Este tipo de proyecto crea una pequeña aplicación Windows Store sin UI ... completa con manifiesto y todo. Tampoco me permite especificar a qué marcos me estoy dirigiendo, parece ser solo para aplicaciones de la Tienda Windows.

Bajo el potencialmente defectuosos supuesto de que yo debería estar probando mis proyectos Biblioteca de clases portátiles con los conjuntos de prueba de unidad que se dirigen al mismo subconjunto marco como el bajo prueba biblioteca ...

¿Cómo se crea un conjunto de prueba unitaria para .NET Portable Class Library?

(estoy abierto a otros marcos que también se dirigen PCL, sólo estoy actualmente desconocen otras soluciones además de MSTest que han tenido esto en cuenta.)

Respuesta

0

La biblioteca de prueba portátil está bajo el SDK de Windows 8 se encuentran aquí (para mí):

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll 

Vas a ver que tiene una clase de afirmar y los atributos necesarios [testXXX]. Si creo un proyecto de biblioteca portátil y agrego la referencia a ese ensamblaje, el Explorador de prueba de Visual Studio mostrará las pruebas marcadas con el atributo [TestMethod], pero no las ejecutará.

+0

No estoy seguro de cómo esto está ayudando al investigador aquí? Si intenta hacer una pregunta, brinde detalles y abra una nueva pregunta. –

+0

Parece que el modo "correcto" en esta referencia de ensamblaje es hacer Archivo -> Nuevo proyecto -> Tienda Windows -> Biblioteca de pruebas unitarias (aplicaciones de la Tienda Windows). Eso le permite al corredor de prueba ejecutar las pruebas. Por supuesto, esto crea una "aplicación" completa con un manifiesto y todo lo que no es realmente una "biblioteca de clases portátil". Veré si puedo encontrar una forma diferente que sea más "oficialmente" compatible. Si no, ¿tal vez esto sea lo más cercano a una respuesta que obtengo? –

+0

Actualicé mi pregunta con la información anterior. Realmente espero obtener una respuesta en la que de alguna manera me permita especificar a qué estructura (s) me estoy dirigiendo, pero quizás eso es pedir demasiado. Veremos. –

2

Hasta donde yo sé, en este momento no hay bibliotecas PCL para la unidad.

Pero me encontré con este proyecto en GitHub que parece prometedor y objetivos exactamente lo que necesita:

https://github.com/jbtule/PclUnit

Se sigue el mismo estilo de prueba de unidad como Nunit sino también tomaron prestado algunas cosas de XUnit, por lo que debe ser bastante fácil de acomodar a ella.

4

xUnit ahora tiene soporte para pruebas de unidades PCL; http://xunit.github.io/

+0

¿Puede indicarme la documentación que muestra cómo garantizar que las pruebas se ejecutan en el subconjunto de infraestructura objetivo en lugar de ejecutarlas en .NET 4.5 completo con solo un ensamblaje de prueba de unidad PCL? Por lo que veo, el soporte de xunit es solo para escribir su ensamblaje de prueba como PCL, sin asegurar que el corredor también se ejecute en ese subconjunto ... pero podría faltar los documentos. –

+1

Ahora entiendo mejor lo que estás buscando ... Sin embargo, estás tocando para probar lo incorrecto; si el código es PCL compat. debería correr igual en cada plataforma. Especialmente desde una perspectiva de pruebas unitarias, creo que no deberías preocuparte por la plataforma. Sin embargo, si está haciendo pruebas de integración, entonces la plataforma es importante. Entonces xUnit probablemente no te ayude en este momento.Pero mira: https://github.com/xunit/devices.xunit. Es posible que quieras contribuir allí. – noocyte

+1

Hemos encontrado al mantener Autofac que las herramientas PCL no son infalibles. A veces puede elegir el subconjunto de plataforma incorrecto. Ejecutar pruebas en el subconjunto de la plataforma real ayudaría a validar que las cosas funcionen correctamente. –

0

Tengo una aplicación universal para Windows Store & Windows Phone que contiene una PCL con mis ViewModels. Acabo de crear un proyecto de prueba de unidad y agregué el modelo de vista como un 'archivo vinculado'.Es solo una pequeña prueba que verifica la cadena en una aplicación Hello World, pero parece funcionar.

Solo el tiempo dirá si esta solución cumple mis necesidades futuras de prueba.

1

Siguiendo con esta pregunta recientemente, traté de configurar las cosas para una nueva solución y tengo un Portable Class Library que puedo probar ahora. No puedo recordar exactamente lo que he intentado antes, pero aquí es lo que tengo trabajando en este momento:

  • Visual Studio Premium 2013 Update 4
  • Uno de los proyectos de tipo Formas Portable Class Library
  • Uno de Windows proyectan
  • Uno aplicación universal que consiste en uno de Windows, Windows Phone y uno un proyecto ....Shared
  • un proyecto de prueba unitaria

El proyecto ...Shared del universal está vacío aparte de un archivo App.xaml, por lo que realmente no se está utilizando hasta el momento.

Todos los proyectos que contienen una interfaz de usuario hacen referencia al proyecto del tipo Portable Class Library, y todos funcionan utilizando el mismo código.

El proyecto de prueba unitaria también hace referencia el código de la Portable Class Library, he añadido la referencia de la forma habitual (clic derecho en References, Add reference y luego elegir el proyecto PCL desde Solution -. Projects

La estructura de la solución es tan Aparecen en la pantalla de abajo:

enter image description here

no estoy del todo seguro de lo que el problema fue cuando traté de conseguir todo el asunto de las pruebas unitarias PCL de trabajo el año pasado, pero ahora parece funcionar como debería.

No dude en solicitar más información si es necesario, intentaré ayudar si es posible.

Cuestiones relacionadas