ASP.net/C#: Как компилировать классы в App_Code, чтобы их можно было запускать из командной строки для модульного тестирования?

У меня есть несколько файлов классов в App_Code на веб-сайте ASP.net, работающем в Microsoft Visual Studio 2005 Professional.

При использовании полного набора модульных тестов я просто хочу каким-то образом скомпилировать эти классы всего проекта в .EXE, чтобы я мог каждую ночь запускать на них модульные тесты.

Я действительно знаю, как создать отдельный проект библиотеки C #, состоящий из этих файлов, и как включить их на свой веб-сайт, но это нежелательно - я не хочу отказываться от возможности оперативно вносить изменения в код этих библиотечных классов при запуске веб-сайта в отладчике. Насколько мне известно, отладчик .Net недостаточно мощный, чтобы изменять код во включенных библиотеках с мгновенной автоматической повторной компиляцией при повторной загрузке страницы.

Итак, я хочу свой торт и тоже ем его:

  1. Модульное тестирование из командной строки файлов классов веб-сайтов в каталоге App_Code
  2. Возможность изменять эти файлы классов без остановки / перезапуска веб-отладчика.

Возможно ли и то, и другое?


person Pete Alvin    schedule 27.07.2010    source источник


Ответы (2)


Вы должны поместить код в совершенно отдельную библиотеку / сборку классов, а затем ссылаться на него из своего веб-проекта и утилиты командной строки. Насколько я знаю, не имеет значения, где вы изменяете свой код, когда он остановлен в отладчике. У меня никогда не было проблем.

Надеюсь, это поможет.

person Kieren Johnstone    schedule 27.07.2010
comment
Я только что попробовал и получаю сообщение об ошибке: Этот исходный файл был изменен. Он больше не соответствует версии файла, используемого для создания отлаживаемого приложения. Это запрещает редактировать и продолжать парадигму. - person Pete Alvin; 27.07.2010
comment
+1: просто и работает. А перенос кода в отдельную сборку имеет то преимущество, что побуждает разработчиков писать тестируемые классы, не зависящие от текущего HttpContext. - person Juliet; 27.07.2010
comment
Я очень удивлен - вы уверены, что у вас есть проект в том же решении? Если это отдельное решение / экземпляр Visual Studio, у вас могут возникнуть проблемы. - person Kieren Johnstone; 27.07.2010
comment
Ах ... У меня они были в разных решениях. Я создал НОВОЕ решение как с желаемой библиотекой классов, так и с веб-сайтом, и когда я пытаюсь отредактировать код в библиотеке, теперь я получаю другую ошибку: изменения не допускаются, если отладчик подключен к уже запущенному процессу или код отлажено оптимизировано. Я проверил MyLibary / Build / Configuration: Active (Debug) / General / [] Optimize Code НЕ проверяется ... все еще запутался! - person Pete Alvin; 27.07.2010
comment
Скорее всего, это конкретный факт, что он был присоединен к процессу после того, как он был запущен; Вы используете Debug- ›Начните с отладки или подключаетесь к веб-серверу? - person Kieren Johnstone; 27.07.2010
comment
Я не могу изменять код во время работы приложения, независимо от того, пытаюсь ли я изменить код в отдельной сборке или нет: с помощью встроенного сервера разработки или IIS в 32-битном или 64-битном режиме. Вы уверены, что можете редактировать и продолжать, если все это находится в веб-приложении? - person Kieren Johnstone; 28.07.2010

Ваш проект находится под контролем версий, верно? Верно? В этом случае вы можете использовать свою систему управления версиями, чтобы включить ссылку на папку app_code вашего проекта asp.net как часть отдельного проекта модульного тестирования. Точный механизм связывания зависит от платформы управления версиями, но если все сделано правильно, это означает, что в системе управления версиями есть ровно один экземпляр вашей папки App_Code, который виден из двух разных проектов. Таким образом, все будет актуальным.

Это дает преимущество в том, что вы можете хранить простой, некомпилированный код прямо здесь, как и всегда, но при этом делая код доступным для тестирования.

person Joel Coehoorn    schedule 27.07.2010
comment
У этого решения есть небольшая неудача: при рефакторинге с помощью такого инструмента, как ReShaper, в тестовом проекте будут отсутствовать ссылки. Это может привести к сбою тестов и невозможности создания тестового проекта. Не большая проблема, но ее следует учитывать. - person TheLukeMcCarthy; 30.11.2011