c# .net code-coverage postsharp

c# - Cobertura de código PostSharp y Visual Studio



.net code-coverage (3)

¿Qué herramienta de cobertura de código utilizas? En PartCover, puede ignorar algunas clases o espacios de nombres, como MyProgram.PostSharp. *, Para recibir los números correctos.

Recientemente, comencé a usar PostSharp en algunos de mis proyectos y noté un desafortunado efecto secundario: la cobertura del código en todos los proyectos que se usaron con caídas significativamente.

Supongo que la razón por la que esto sucede es que el analizador ve el código PostSharp y muchos de ellos no se han probado (es decir, el código de la placa de la caldera para el manejo y registro de excepciones genéricas). Obviamente, podría escribir pruebas unitarias para cada método que utilice los aspectos, pero si soy sincero, parece una pérdida de tiempo.

¿Alguien tiene alguna experiencia con este tipo de cosas?


Encontré una solución para este problema:

Si no agrego el atributo de aspecto en el modo de depuración, la cobertura del código se calcula correctamente (si ejecuto las pruebas en el modo de depuración):

#If Not DEBUG Then <Assembly: De.Trumpkin.LogWrapper.TraceLogAspect()> #End If


Estoy familiarizado con AOP pero no específicamente con PostSharp.

Pero...

Si los atributos de exclusión no resuelven el problema, la única alternativa que veo es crear una versión del ensamblaje sin el código inyectado. Cómo debe obtener esto depende de cómo funciona PostSharp. Si se realiza después de la compilación normal, podría hacer un destino de compilación adicional que compile su ensamblaje sin PostSharp. Entonces puedes usar eso en tus pruebas unitarias. Debe tener en cuenta que su prueba de unidad ya no puede probar la funcionalidad agregada por PostSharp.