Почему Кассини запускается, когда я запускаю юнит-тест в VS2008? - PullRequest
2 голосов
/ 24 июля 2009

Я пытаюсь протестировать класс (контроллер), который не должен запускаться в среде asp.net.

Но когда я запускаю тест, запускается cassini.

Как я могу избежать нагрузки Кассини?

Спасибо

Ответы [ 4 ]

1 голос
/ 27 июля 2009

Проблема заключалась в покрытии кода. Я отключил его, и теперь cassini больше не запускается (без отладки).

0 голосов
/ 24 июля 2009

Cassini должен запускаться только в том случае, если вы отлаживаете или запускаете свой проект (т.е. нажимаете F5 или Ctrl-F5 ), а не когда вы выполняете свои модульные тесты. Вы можете изменить то, что происходит при нажатии F5 , просмотрев свойства вашего проекта ASP.NET и выбрав вкладку Web . Вы не указали, как вы выполняете свои тесты, но как среда модульного тестирования Visual Studio, так и платформы, такие как NUnit, будут запускать ваши тесты в отдельном процессе, который не является Cassini. Если вместо этого у вас есть собственный проект консольного приложения для выполнения ваших тестов, вы должны убедиться, что вы установили этот проект как StartUp проект. Затем нажатие F5 запустит ваше тестовое консольное приложение, а не Cassini.

0 голосов
/ 24 июля 2009

Если вы запустите свои тесты в режиме отладки, запустится cassini. Если вы запускаете свои тесты без режима отладки, то это не так.

0 голосов
/ 24 июля 2009

Вашему контроллеру нужна среда asp.net, это обработчик ваших запросов. Вместо этого вы можете настроить IDE на использование IIS. Нажмите на странице свойств вашего проекта, и на вкладке веб вы увидите переключатель Использовать IIS, который позволит вам настроить виртуальный каталог. Тогда больше нет cassini.

Если вы использовали функцию создания модульных тестов в Visual Studio, тогда будет выполнен такой тест

[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\working\\MDTest\\MvcApplication1", "/")]
[UrlToTest("http://localhost:1169/")]
public void AccountControllerConstructorTest()
{
   //Implementation
}

Атрибут UrlToTest - это то, что заставляет cassiniНачало. Как я уже говорил выше, вашему контроллеру действительно нужна среда asp.net, потому что это обработчик http, поэтому его нужно вызывать, используя http, чтобы протестировать его. Если вам просто не нравится Кассини (достаточно справедливо), вам все равно понадобится IIS, чтобы он заработал.

Если вы щелкнете правой кнопкой мыши по своему веб-проекту, следуйте инструкциям вверху этогопост, функция Создать модульные тесты будет производить это

[TestMethod()]
[HostType("ASP.NET")]
[UrlToTest("http://localhost/MvcApplication1")]
public void AccountControllerConstructorTest()...

, который работает без Кассини:)

...