2015-06-15 2 views
1

У меня есть приложение asp.net MVC, в котором я использую Nunit для написания тестов. Графический интерфейс Nunit не может найти app.config, когда я запускаю тест. Мой тестовый проект Nunit находится в папке bin/отладки вместе с копией app.config:Nunit gui не находит файл app.config

Мой проект Nunit имеет следующие параметры:

<NUnitProject> 
    <Settings activeconfig="Default" processModel="Default" domainUsage="Default" appbase="C:\Sandbox\HB2\HB2.UnitTests" /> 

    <Config name="Default" binpathtype="Auto" configfile="app.config" path="C:\Sandbox\HB2\HB2.UnitTests\bin\debug\"> 

    <assembly path="bin\debug\HB2.UnitTests.dll" /> 

    </Config> 
</NUnitProject> 

Из нескольких статей, которые я читал, я бы подумайте, что Nunit должен найти app.config, но это не так. Что не так?

ответ

0

Возможно, вы используете файл проекта NUnit. Если это так, у вас будет файл, похожий на MyTestProject.nunit. Когда вы используете файл проекта, вместо использования файла app.config по умолчанию для конкретной сборки, включенной в проект, NUnit по умолчанию будет искать файл с тем же именем, что и файл проекта Nunit. Так что в моем примере это будет MyTestProject.config. Вы не сказали, что такое ваш проект, поэтому я не могу дать вам точный ответ ...

Он работает таким образом, потому что он делает его явным, какой конфигурационный файл использовать, что становится важным после того, как вы начнете включать больше сборок в ваш файл проекта. Если вы всегда собираетесь использовать конфигурацию из конкретной сборки, тогда простой способ сохранить синхронизацию двух - это настроить шаг пост-сборки, чтобы скопировать конфигурацию из этой сборки в расположение .config.

Если открыть индивидуальную сборку в графическом интерфейсе, а не работать с файлом проект, то он подберет конфигурацию, связанную с этой DLL (так HB2.UnitTests.dll.config в вашем примере)

Когда Я отредактировал ваш вопрос, я заметил, что вы настраиваете файл конфигурации для использования в файле проекта. Однако вы настраиваете его на неправильную вещь. Когда вы компилируете проект, создающий библиотеку классов, app.config переименовывается компиляцией. Как я сказал выше, это обычно <ouputassembly>.config. Таким образом, вы должны обновить эту строку в файле проект:

<Config name="Default" binpathtype="Auto" configfile="app.config" 
     path="C:\Sandbox\HB2\HB2.UnitTests\bin\debug\"> 

Для этого:

<Config name="Default" binpathtype="Auto" configfile="HB2.UnitTests.dll" 
     path="C:\Sandbox\HB2\HB2.UnitTests\bin\debug\"> 
+0

Очень хорошее объяснение, гораздо яснее, чем во многих других статьях я прочитал. Спасибо. Мне пришлось перейти на «configfile =" bin \ debug \ HB2.UnitTests.dll ", прежде чем он смог найти конфигурацию. –

Смежные вопросы