Estou testando por unidade um aplicativo .NET (.exe) que usa um arquivo app.config para carregar propriedades de configuração. O aplicativo de teste de unidade em si não possui um arquivo app.config.
Quando tento testar um método que utiliza qualquer uma das propriedades de configuração, eles retornam nulos . Estou assumindo que isso ocorre porque o aplicativo de teste de unidade não será carregado no app.config do aplicativo de destino.
Existe uma maneira de substituir isso ou eu tenho que escrever um script para copiar o conteúdo do app.config de destino em um app.config local?
Esse post meio que faz essa pergunta, mas o autor está realmente olhando para ela de um ângulo diferente do que eu.
EDIT: devo mencionar que estou usando o VS08 Team System para meus testes de unidade.
fonte
No Visual Studio 2008, adicionei o
app.config
arquivo ao projeto de teste como um item existente e selecionei a cópia como link para garantir que não seja duplicado. Dessa forma, só tenho uma cópia na minha solução. Com vários projetos de teste, é realmente útil!fonte
Esteja você usando o Team System Test ou o NUnit , a melhor prática é criar uma biblioteca de classes separada para seus testes. Simplesmente adicionar um App.config ao seu projeto de Teste será automaticamente copiado para sua pasta bin quando você compilar .
Se o seu código depende de testes de configuração específicos, o primeiro teste que eu escreveria valida a disponibilidade do arquivo de configuração ( para que eu saiba que não sou louco ):
E o teste:
Idealmente, você deve escrever um código para que seus objetos de configuração sejam passados para suas classes. Isso não apenas o separa do problema do arquivo de configuração, mas também permite que você escreva testes para diferentes cenários de configuração.
fonte
Se você possui uma solução que contém, por exemplo, Aplicativo da Web e Projeto de Teste, provavelmente deseja que o Projeto de Teste use o web.config do Aplicativo da Web.
Uma maneira de resolver isso é copiar o web.config para testar o projeto e renomeá-lo como app.config.
Outra e melhor solução é modificar a cadeia de construção e fazer uma cópia automática do web.config para testar o diretório de saída dos projetos. Para fazer isso, clique com o botão direito do mouse em Aplicativo de Teste e selecione Propriedades. Agora você deve ver as propriedades do projeto. Clique em "Build Events" e, em seguida, clique em "Edit Post-build ...". Escreva a seguinte linha para lá:
E clique em OK. (Observe que você provavelmente precisará alterar o WebApplication1 ao projetar o nome que deseja testar). Se você tiver um caminho errado para o web.config, a cópia falhará e você o notará durante a compilação sem êxito.
Editar:
Para copiar do projeto atual para o projeto de teste:
fonte
.config
arquivos. Obrigado por compartilhar! :)web.config
têm apenas referências a.config
arquivos externos dentro do mesmo projeto. Como o caminho pode apontar apenas para pastas no mesmo diretório (o que é verdadeiro normalmente), ao executar testes, ele não poderá manipular esses arquivos externos. Alguma idéia de como resolvê-lo?Isso é um pouco antigo, mas achei uma solução melhor para isso. Eu estava tentando a resposta escolhida aqui, mas parece que .testrunconfig já está obsoleto.
1. Para testes de unidade, embrulhe a configuração é uma interface (IConfig)
para testes de unidade, a configuração realmente não deve fazer parte do seu teste, então crie uma simulação que você possa injetar. Neste exemplo, eu estava usando o Moq.
2. Para teste de integração, adicione dinamicamente a configuração necessária
fonte
Isto é muito fácil.
fonte
Se você estiver usando o NUnit, dê uma olhada nesta postagem . Basicamente, você precisará ter seu app.config no mesmo diretório que o arquivo .nunit.
fonte
Se o seu aplicativo estiver usando configurações como Asp.net ConnectionString, você precisará adicionar o atributo HostType ao seu método, caso contrário, elas não serão carregadas, mesmo que você tenha um arquivo App.Config.
fonte
Eu uso o NUnit e no diretório do meu projeto tenho uma cópia do meu App.Config que altero algumas configurações (por exemplo, redireciono para um banco de dados de teste ...). Você precisa tê-lo no mesmo diretório do projeto testado e ficará bem.
fonte
Como não consegui obter nenhuma dessas sugestões para trabalhar com o nUnit 2.5.10, acabei usando a funcionalidade Project -> Edit do nUnit para especificar o arquivo de configuração a ser segmentado (como outros disseram que ele precisa estar na mesma pasta que o. próprio arquivo de unidade). O lado positivo disso é que eu posso dar ao arquivo de configuração um nome Test.config, o que torna muito mais claro o que é e por que)
fonte
Seus testes de unidade são considerados como um ambiente que executa seu código para testá-lo. Assim como qualquer ambiente normal, você tem, ou seja, preparação / produção. Pode ser necessário adicionar um
.config
arquivo para o seu projeto de teste também. Uma solução alternativa é criar uma biblioteca de classes e convertê-la em Projeto de Teste, adicionando os pacotes NuGet necessários, como NUnit e NUnit Adapter. funciona perfeitamente bem com o Visual Studio Test Runner e o Resharper e você tem seuapp.config
arquivo no seu projeto de teste.E finalmente depurei meu teste e valor de
App.config
:fonte