Estou tentando terminar este manipulador de exceção:
if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null)
{
string pathOfActiveConfigFile = ...?
throw new ConfigurationErrorsException(
"You either forgot to set the connection string, or " +
"you're using a unit test framework that looks for "+
"the config file in strange places, update this file : "
+ pathOfActiveConfigFile);
}
Esse problema parece acontecer apenas quando estou usando o nUnit.
c#
.net
nunit
app-config
configurationmanager
MatthewMartin
fonte
fonte
A rigor, não existe um único arquivo de configuração. Excluindo o ASP.NET 1 , pode haver três arquivos de configuração usando o
System.Configuration
suporte inbuilt ( ). Além da configuração da máquina:,app.exe.config
roaming do usuário e local do usuário.Para obter a configuração "global" ( exe .config):
Use
ConfigurationUserLevel
valores diferentes para arquivos de configuração de roaming e não-roaming por uso.1 Que possui um modelo completamente diferente, no qual o conteúdo de pastas filho (IIS-virtual ou sistema de arquivos)
web.config
pode (dependendo da configuração) adicionar ou substituir o paiweb.config
.fonte
Se você deseja obter apenas um retorno nulo ao usar o NUnit, provavelmente precisará copiar o valor ConnectionString do seu app.config do seu aplicativo para o app.config da sua biblioteca de teste.
Quando executado pelo carregador de teste, o assembly de teste é carregado em tempo de execução e procurará em seu próprio app.config (renomeado para testAssembly.dll.config em tempo de compilação) e não no arquivo de configuração dos aplicativos.
Para obter o local da montagem que você está executando, tente
fonte
Certifique-se de clicar nas propriedades do arquivo e configurá-lo para "copiar sempre" ou ele não estará na pasta Debug \ com suas DLLs felizes para configurar onde precisa estar e adicionar mais cowbell
fonte
A primeira vez que percebi que o projeto de teste de unidade referenciava o app.config nesse projeto, e não o app.config associado ao meu projeto de código de produção (claro, DOH), acabei de adicionar uma linha no evento Post Build do projeto Prod que copiará o app.config para a pasta bin do projeto de teste.
Problema resolvido
Não notei nenhum efeito colateral estranho até agora, mas não tenho certeza de que seja a solução certa, mas pelo menos parece funcionar.
fonte
Mais uma opção que vi está faltando aqui:
fonte
Dependendo da localização do seu arquivo de configuração,
System.Reflection.Assembly.GetExecutingAssembly().Location
você pode fazer o que precisa.fonte
Tentei uma das respostas anteriores em um aplicativo Web (na verdade, uma função da Web do Azure em execução localmente) e não funcionou muito bem. No entanto, essa abordagem semelhante funcionou:
O arquivo de configuração estava em C: \ Arquivos de Programas \ IIS Express \ MyComponent.dll.config. Lugar interessante para isso.
fonte