2015-01-14 4 views
0

Я пытаюсь увидеть, если я могу реализовать рекомендации, перечисленные здесь:тестов проекта не находя тестирование проекта DLL

http://www.ndepend.com/Res/NDependWhiteBook_Assembly.pdf

  • У меня есть мой основной проект создан как приложение командной строки.
  • У меня есть мой тестовый проект, ссылающийся на мой cmdlnApp с copylocal = false.
  • У меня есть основная настройка проекта для вывода .. \ сборки \ отладки (при отладке)
  • У меня есть настройка тестового проекта для вывода .. \ построить \ тестов \

У меня есть app.config в моем тестовом проекте со следующими параметрами:

<configuration> 
    <runtime> 
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
       <probing privatePath="debug;debug\lib;tests;" /> 
       <dependentAssembly> 
         <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
        <bindingRedirect oldVersion="0.0.0.0-2.6.9.0" newVersion="2.6.9.0" /> 
       </dependentAssembly> 
       <dependentAssembly> 
        <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
        <bindingRedirect oldVersion="0.0.0.0-2.6.9.0" newVersion="2.6.9.0" /> 
       </dependentAssembly> 
       <dependentAssembly> 
        <assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" /> 
        <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> 
       </dependentAssembly> 
       <dependentAssembly> 
        <assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" /> 
        <bindingRedirect oldVersion="0.0.0.0-2.6.4.14350" newVersion="2.6.4.14350" /> 
       </dependentAssembly> 
      </assemblyBinding> 
    </runtime> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
    </startup> 
</configuration> 

Когда я пытаюсь запустить мои модульных тестов я получаю сообщение об ошибке: System.IO.FileNotFoundException: не удалось загрузить файл или сборку «CmdLnApp, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null или одна из его зависимостей ,

Я проверил и создается папка сборки, в папке отладки есть все файлы из CmdLnApp, а в папке сложения также есть папка с тестами, в которой находятся все библиотеки тестирования.

Может ли кто-нибудь увидеть то, что мне не хватает?

+0

Проводится ли в вашем модульном тестировании использование CmdLnApp? Он не может найти исполняемый файл вашей основной консоли, где он его ищет, но вы ничего не сказали о том, что вы действительно видите его в выходной папке. – zmechanic

+0

Исполняемый файл CmdLnApp отображается в папке отладки, и тесты имеют тесты, в которых используется исполняемый файл. – Bitfiddler

+0

Мое понимание директивы «probing» в сборке было связано с тем, что он должен инструктировать CLR для поиска каталогов, перечисленных в «privatePath», для поиска зависимостей. Поскольку папка отладки является дочерним элементом тестовой папки, мне показалось, что должен быть найден исполняемый файл CmdLnApp. – Bitfiddler

ответ

0

Правило большого пальца: весь код должен быть во внешних DLL. Это делает его более проверяемым. Все, что находится в exe, может быть проверено пользователями, автоматизированным тестом пользовательского интерфейса или вызовом exe с параметрами командной строки. Все они громоздки и несут ответственность за провал. Исправьте настройки, и проблем не возникнет.

+0

, даже если код находится в отдельной dll, как предполагается, что тестировщик должен знать, чтобы исследовать подпапку, в которой она будет находиться, если я не использую «copy-local», чего я пытаюсь избежать? – Bitfiddler

+0

Затем вам нужно указать вашему тестовому бегуну использовать ваш файл .config, в котором вы передаете траектории зондирования. Если вы используете NUnit, следующая ссылка объясняет, как это сделать: http://stackoverflow.com/questions/1412235/how-do-you-instruct-nunit-to-load-an-assemblys-dll-config-file- из-а-специфичны. Если нет, вы можете использовать Google, если это возможно для вашего конкретного выбора.Поскольку тестовый прогон фактически равен загрузке AppDomain достаточно, чтобы использовать отражение и обнаруживать атрибуты тестирования. Для того, чтобы выполнить этот тест, нужно сначала загрузить сборку в домен. – zmechanic

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