Pergunta

como escrever testes de unidade para classes internas ???

Foi útil?

Solução

Você escrever testes que especificam o comportamento da interface externa da classe de nível superior. Se essa classe usa classes internas para implementar esse comportamento ou não, é um detalhe de implementação da classe, e os testes não precisa saber nada sobre isso.

Se a classe interna não pode ser adequadamente testados através da interface de classe de nível superior, em seguida, geralmente é melhor para mover a classe interna para fora e testá-lo diretamente como uma nova classe de nível superior. Querendo testar classes internas é um cheiro de código que a classe interna pode ser suficiente significativo para ser uma classe de nível superior.

Outras dicas

Não que eu recomendo, mas você também pode usar o InternalsVisibleToAttribute .

Ao usar o MS Visual Studio para a Unidade de testes que você tem que simplesmente criar uma privada acessor . Internamente ele funciona com reflexos penso. Basta dar uma olhada no código gerado.

Você não testá-lo diretamente. Vai ser testado através da classe onde está definido.

E, se você aplicar TDD, como esta pergunta marcas implica actualmente, o que é o teste que você acabou de escrever essa chamada para uma classe interna? Quero dizer que não pode ser uma classe padrão, propriedade privada da classe que você está trabalhando?

Temos usado uma classe auxiliar que usa reflexão para métodos de carga e de compra sobre classes internas. Também é possível mudar a acessibilidade em tempo de compilação usando o símbolo DEBUG por exemplo

#if DEBUG
public
#else
internal
#endif
    class MyInternalClass
{
    ...
}

No entanto a resposta de Esko Luontola é mais correta, pois é a funcionalidade ou de negócios requisitos que são mais importantes. É fácil ficar demasiado centrada sobre a cobertura de código em vez de testar as áreas de risco importantes.

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