¿Es posible obtener un análisis de cobertura de código en un ensamblaje de interoperabilidad?

StackOverflow https://stackoverflow.com/questions/99520

Pregunta

También hice esta pregunta en los foros de MSDN y no encontré una solución:

http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3686852&SiteID=1

El problema básico aquí, tal como lo veo, es que un ensamblado de interoperabilidad en realidad no contiene ningún IL que pueda instrumentarse (excepto tal vez algunos delegados).Entonces, aunque puedo armar un proyecto de prueba que ejercite la capa de interoperabilidad, no puedo entender cuántos de esos métodos y propiedades a los que realmente estoy llamando.

El plan B es escribir un generador de código que cree una biblioteca de RCWW (Runtime Callable Wrapper Wrappers) e instrumentarlo a los efectos de la cobertura del código.

Editar:@Franci Penov,

Sí, eso es exactamente lo que quiero hacer.Los componentes COM que nos entregaron constituyen una biblioteca de unas docenas de DLL que contienen aprox.3000 tipos.Consumimos esa biblioteca en nuestra aplicación y estamos a cargo de probar esa capa de interoperabilidad, ya que el grupo que nos entrega las bibliotecas realiza pruebas mínimas.La cobertura del código nos permitiría garantizar que se ejerzan todas las interfaces y coclases.Eso es todo lo que intento hacer.Tenemos proyectos de prueba separados que ejercitan nuestro propio código administrado.

Sí, idealmente el equipo del servidor COM debería probar y analizar su propio código, pero no vivimos en un mundo ideal y tengo que entregar un producto de calidad basado en su trabajo.Si puedo producir un informe de prueba que indique que he probado el 80 % de sus interfaces de código y que el 50 % de ellas no funcionan como se anuncia, puedo realizar correcciones donde es necesario realizar correcciones, y no solucionar problemas.

La capa simulada que mencionaste sería útil, pero en última instancia no lograría el objetivo de probar la capa Interop en sí, y ciertamente no me gustaría mantenerla a mano: estamos a merced de los chicos de COM en términos de cambios en las interfaces.

Como mencioné anteriormente, el siguiente paso es generar contenedores para los contenedores e instrumentarlos con fines de prueba.

¿Fue útil?

Solución

Para responder a su pregunta, no es posible instrumentar ensamblajes de interoperabilidad para la cobertura de código.Solo contienen metadatos y ningún código ejecutable, como usted mismo menciona.

Además, no veo mucho sentido en intentar codificar la cobertura del ensamblaje de interoperabilidad.Deberías medir la cobertura del código que escribes.

Según el hilo de los foros de MDN que mencionas, me parece que realmente quieres medir cómo tu código usa el componente COM.A menos que el objetivo de su código sea enumerar y llamar explícitamente todos los métodos y propiedades del objeto COM, no necesita medir la cobertura del código.Necesita pruebas unitarias/de escenario para garantizar que su código llame a los métodos/propiedades correctos en el momento adecuado.

En mi humilde opinión, la forma correcta de hacer esto sería escribir una capa simulada para el objeto COM y probar que está llamando a todos los métodos/propiedades como se esperaba.

Otros consejos

Plan C:

usa algo como mono.cecil para tejer contadores de ejecución simples en el ensamblaje de interoperabilidad.Por ejemplo, consulte esta sección en el Preguntas más frecuentes:"Me gustaría agregar alguna funcionalidad de rastreo a un ensamblaje que no puedo depurar. ¿Es posible usar Cecil?"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top