2009-09-05 10 views
15

Estoy buscando una solución de cobertura de código que funcione con silverligt. También debe funcionar con msbuild porque ejecutamos todas las otras pruebas unitarias automáticamente en el servidor de compilación.Cómo obtener cobertura de código cuando se prueba Silverlight

La integración con Visual Studio y/o resharper es una ventaja y no tengo nada en contra de la configuración fácil o un puntero a un tutorial. Normalmente no modifico los archivos de compilación y desafortunadamente no tengo tiempo para aprender msbuild en este momento.

Respuesta

6

Desafortunadamente, debido al modelo de seguridad transparente (es decir, todas las aplicaciones de espacio aislado) en el tiempo de ejecución de Silverlight, esta no es una tarea fácil. La instrumentación de cobertura de código .NET tradicional modifica el ensamblaje subyacente, insertando llamadas P/Invoke a herramientas de recopilación de cobertura.

Como resultado, herramientas como la herramienta de instrumentación de cobertura de código Visual Studio 2008 no funcionan con Silverlight.

Para lograr esto en Silverlight, necesitaría diseñar un programa de instrumentación personalizado más una forma de recopilar e informar esos datos.

En el equipo de Silverlight hemos desarrollado una solución parcial que puede permitir esto para algunas personas, pero no está lista para su lanzamiento. Búscalo algún día en Silverlight Toolkit, posiblemente.

Disculpa que no sé una respuesta para ti hoy.

0

Según NCover Preguntas que puede cubrir Silverlight:

[http://docs.ncover.com/ref/3-0/frequently-asked-questions/#q05][1]

Hasta el momento no he encontrado ninguna información si que realmente funciona, por ejemplo, para las bibliotecas de clase silverlight. Es extraño que si ncover funciona no hay información (publicaciones en el blog, etc.) al respecto. ¿Todos usan la ruta "Crear biblioteca de .NET estándar y los archivos de enlace en ella para obtener la información de cobertura" al probar el código Silverlight?

Cuando se trata de otras soluciones (incluso comerciales) mi Google no ha producido ningún resultado.

1

La respuesta en este momento es No (si Jeff Wilcox dice que no, no ;-)).

me preguntó NCover apoyar esta pregunta posterior (about their FAQ re Silverlight) un tiempo:

... estoy usando Silverlight 2.0 y que yo sepa sólo se puede ejecutar en el navegador. Entonces, ¿estás hablando de SL3 o me he perdido algo?

Creo que SL3 se RTMed pronto. Si actualizo, ¿mi aplicación podrá quedarse sin el navegador (y por lo tanto usar NCover) automáticamente, o tendré que cambiarlo para hacer esto?

Y esta es la respuesta que obtuve:

El FAQ es precisa tal como está, sin embargo, el texto hace que sea un tanto confuso. Lo que se entiende por el tema de preguntas frecuentes es que NCover no admite la cobertura del código de Silverlight (v1 o v2 o v3) cuando se usa el argumento // iis, porque luego se ejecuta en su propia CLR.

Sin embargo, las clases subyacentes y secundarias de una aplicación Silverlight (v1 o v2 o v3) son válidas C#/VB, por lo que puede escribir pruebas unitarias contra esa parte de la aplicación y ejecutar esas pruebas con NUnit/MSTest/Gallio/xUnit/etc y obtendrás cobertura de esa porción.

Aún no hemos investigado si NCover puede obtener cobertura en Silverlight v3 cuando se ejecuta fuera del navegador, pero espero que no podamos hacerlo. Sin embargo, una vez que sepamos con certeza, haremos una nota en la documentación.

Entendí que las aplicaciones de Silverlight no son compatibles, debe "Crear una biblioteca .NET estándar y vincular archivos para obtener los datos de cobertura".

0

Lo solicité al soporte de NCover.

Mi pregunta era:

digamos que creo una clase Silverlight biblioteca (Proyecto -> Nuevo proyecto ...) desde Visual Studio. En esta biblioteca de clases Tengo varias clases y yo utilizar la plantilla Silverlight NUnit a proyecto que contiene pruebas unitarias para mi biblioteca de clases de Silverlight:

http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx

soy capaz de ejecutar pruebas unitarias simplemente finas (incluso en el servidor de compilación, somos usando msbuild y TFS) pero no puedo obtener datos de cobertura de código para ellos utilizando las opciones de cobertura de código estándar que están disponibles en Visual Studio.

¿Puede NCover mostrar la cobertura del código para mis bibliotecas de clase silverlight?

respuesta que obtuve:

Mientras se está probando las bibliotecas de clases con NUnit, usted debería ser capaz de cubrir usando NCover. Si los prueba a través de un navegador web usando una herramienta como Selenium, , entonces no podrá obtener cobertura.

Ahora me pregunto si alguien en el equipo de Silverlight ha intentado usar NCover + NUnit? Por supuesto, MS tiene su propio marco de prueba de unidades, por lo que, en el "sentido comercial", no se vería tan bien :) Pero, ¿qué tal si solo probamos si esto funciona?

2

Siga el siguiente procedimiento y obtenga los resultados de Cobertura del código;

-Añadir un nuevo proyecto de prueba a la solución
-Eliminar todas las clases existentes (prueba de la base de datos, etc .. venta Prueba) para que sólo se quedan con la clase de prueba de unidad (UnitTest1).
-Quite todos los comentarios inútiles y el código crud de la clase de prueba para que solo le quede un método de prueba (sin comentarios, ni siquiera el TestContext)
-Agregar una referencia a las versiones de Silverlight de "System.dll", "System.Windows.dll" para el proyecto de prueba. (generalmente ubicado en "C: \ Archivos de programa \ Microsoft SDKs \ Silverlight \ v2.0 \ Reference Assemblies \" (eliminar la referencia existente al sistema.dll si es necesario en primer lugar)
-Añadir una referencia al proyecto que se está probando
-Usted puede ahora escribir pruebas contra el modelo de objetos (clases estándar)

Cheers,

Ref: http://weblogs.asp.net/rosherove/archive/2008/12/27/unit-testing-in-silverlight-land-with-typemock-isolator.aspx

+0

Pude hacerlo funcionar asegurándome de hacer referencia a los dlls del sistema silverlight 4.0 sdk (System.dll, System.Core.dll, System.Windows.dll) a diferencia de los .Net Assemblies. [Aquí hay una publicación de blog] (http://nileshgule.blogspot.com/2011/05/unit-test-viewmodel.html) que también lo indica. – leogdion

1

Para aclarar publicaciones anteriores, NCover puede cubrir cualquier proceso .NET SOLAMENTE. Todavía no maneja el Silverlight CLR. En los casos presentados anteriormente, un usuario preguntó acerca de un marco de prueba .NET que dispara sus pruebas .NET que se ejecutan en su aplicación Silverlight. Cualquier cosa .NET (por ejemplo, el marco de prueba) se tratará en este escenario. El código de Silverlight NO estará cubierto.

Cuestiones relacionadas