É possível obter Análise de cobertura de código em um assembly de interoperabilidade?

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

Pergunta

Eu já fiz esta pergunta sobre nos fóruns do MSDN também e não ter encontrado uma resolução:

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

O problema básico aqui como eu vejo é que uma interoperabilidade montagem na verdade não contém nenhuma IL que pode ser instrumentado (exceto para talvez alguns delegados). Assim, embora eu possa montar um projeto de teste que exerce a camada de interoperabilidade, eu não posso ter uma noção de quantas desses métodos e propriedades Na verdade, estou chamando.

Plano B é ir e escrever um gerador de código que cria uma biblioteca de RCWWs (Runtime Callable Wrapper Wrappers), eo instrumento que, para efeitos de cobertura de código.

Edit: @Franci Penov,

Sim, isso é exatamente o que eu quero fazer. Os componentes COM entregues a nós constituem uma biblioteca de algumas dezenas de DLLs contendo aprox. 3000 tipos. Nós consumimos essa biblioteca em nossa aplicação e são acusados ??de testar essa camada Interop, desde que o grupo entregar as bibliotecas que nos faz testes mínimos. cobertura de código nos permitiria assegurar que todas as interfaces e coclasses forem exercidas. Isso é tudo que eu estou tentando fazer. Temos projetos de teste separadas que exercem o nosso próprio código gerenciado.

Sim, idealmente, a equipe de servidor COM deve estar testando e analisando o seu próprio código, mas não vivemos em um mundo ideal e eu tenho que entregar um produto de qualidade com base em seu trabalho. Se pode produzir um relatório de ensaio indicando que eu testei 80% de suas interfaces de código e 50% dos que não funcionam como anunciado, posso me correções feito onde correções precisam ser feitas, e não problemas solução alternativa.

A camada de simulação que você mencionou seria útil, mas não acabaria por ser alcançar o objetivo de testar a camada Interop em si, e eu certamente não gostaria de ser manter tudo na mão - estamos à mercê do COM caras em termos de alterações nas interfaces.

Como eu mencionei acima - o próximo passo é gerar wrappers para as embalagens e instrumento aqueles para fins de teste

.
Foi útil?

Solução

Para responder à sua pergunta - não é possível instrumento de interoperabilidade conjuntos para cobertura de código. Eles contêm apenas metadados e nenhum código executável como você menciona-se.

Além disso, eu não vejo muito sentido em tentar de cobertura de código a interoperabilidade montagem. Você deve medir a cobertura de código de código que você escreve.

A partir dos fóruns MDN enfiar você menciona, parece-me que você realmente quer para medir como o código utiliza o componente COM. A menos que a meta de seu código é enumerar e explicitamente chamar todos os métodos e propriedades do objeto COM, você não precisa para medir a cobertura de código. Você precisa de teste de unidade / cenário para garantir que seu código está chamando os métodos adequados / propriedades no momento certo.

IMHO, o caminho certo para fazer isso seria escrever uma camada de simulação para o objeto COM e teste que você está chamando todos os métodos / propriedades como esperado.

Outras dicas

Plano C:

Use algo como Mono.Cecil para contadores de execução simples tecer para a interoperabilidade de montagem. Por exemplo, veja esta seção no Faq : "Eu gostaria de adicionar algumas funcionalidades de rastreamento para um conjunto não posso depuração, é possível usar Cecil? "

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top