A maioria dos aplicativos requer alguma configuração externa; você pode ocultar isso tornando-o dependente de variáveis mágicas ou salvando-o em algum local interno, mas isso não removerá a necessidade. O objetivo é reconhecer o que deve ser externo e o que pode ser interno. Somente as partes internas podem ser testadas.
Um aplicativo não deve confiar em um arquivo de configuração externo para estar correto. Ele deve verificar a correção e relatar erros. Se não for possível para o aplicativo verificar o arquivo de configuração, provavelmente você está fazendo muito com ele. Se o arquivo de configuração alterar o comportamento do aplicativo, ele não deve ser externo na minha opinião.
Por exemplo, um nome de usuário / senha do banco de dados pode ser facilmente verificado pelo aplicativo tentando se conectar ao banco de dados. Se isso falhar, pode ser relatado e, obviamente, não é um bug no código do aplicativo. Da mesma forma, para um caminho de arquivo, a existência e os direitos de acesso podem ser verificados.
Agora, se você colocar consultas SQL no arquivo de configuração, o aplicativo não poderá verificar facilmente a exatidão dessas consultas. O mesmo vale para um arquivo completo de especificação de injeção de dependência (a Java-Spring XML). Esses não devem estar em arquivos de configuração externos.
Mas se a configuração especificada descrever algo externo e você puder verificar rapidamente sua correção, não acho que haja algo errado com os arquivos de configuração externos.
Editar: verifique também se seus relatórios de erro mostram qual arquivo de configuração é usado. Nada é mais frustrante do que descobrir que você estava olhando para o arquivo errado depois de horas tentando descobrir o que havia de errado com ele.