Pergunta

Eu tenho uma classe de registo que é instanciado na inicialização de um aplicativo console eo armazenado em uma variável estática.

Se eu quero uma classe para usar o logger deve ser passado para a classe no construtor ou referenciadas diretamente?

Eu estou tentando testes de unidade de gravação e de qualquer forma eu deveria ser capaz de fazê-lo. Significa apenas que eu tenho que definir a variável estática antes de chamar o código que o utiliza.

Felicidades.

Nenhuma solução correta

Outras dicas

Parece que o que você está procurando algum tipo de IoC recipiente . Você pode usar Unidade de EntLib ou outra coisa assim.

Para fazer suas aulas como unidade testável quanto possível, todas as dependências, incluindo madeireiros, deve ser passado em sempre que possível. Isto é o que é chamado Dependency Injection (DI), e é um padrão muito comum e padrão para escrever código testável unidade. Logging é quase sempre uma preocupação transversal que só é incorporada dentro dos corpos de métodos porque não há realmente quaisquer estruturas decentes AOP para puxar adequadamente essas preocupações fora e aplicá-las de forma declarativa. Tendo que lidar com o registo quando a escrita / execução de testes de unidade só aumenta a complexidade dos testes, possivelmente, acrescentando preocupações adicionais de configuração, quando você realmente deseja manter seus testes como simples e direcionados possível.

Você pode criar uma instância dele e armazenar essa instância como um membro da mesma classe e retorno que através de uma propriedade.

por exemplo. Logger.Default
Isso irá retornar a referência à instância que foi criado.

EDIT: Um exemplo disso poderia ser Console classe e seu método setout. Quer dizer que você pode continuar usando Console.WriteLine .... e se você quiser alterar o fluxo, use o método setout. Ele redireciona a saída para um novo fluxo.

Espero que ajude.

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