Конфигурация модульного теста для приложения ASP.NET - PullRequest
3 голосов
/ 12 января 2010

Это мой первый тест для Asp.Net Web Application. У нас есть движок, состоящий из нескольких модулей. Мне нужно проверить классы в модуле двигателя. Хотя эти предложения являются частью приложения Asp.Net, они состоят только из бизнес-логики.

Как я могу тестировать эти классы изолированно, будучи частью WebApp? потому что я получаю эту ошибку

Веб-запрос 'http://localhost:8936/' успешно выполнен без запуска теста. Это может произойти, если настройка веб-приложения для тестирования завершается неудачно (при обработке запроса возникает ошибка сервера ASP.NET) или когда не выполняется страница ASP.NET (URL-адрес может указывать на страницу HTML, веб-службу или список каталогов). Для запуска тестов в ASP.NET требуется, чтобы URL-адрес соответствовал странице ASP.NET и чтобы страница выполнялась правильно до события Load. Ответ на запрос сохраняется в файле 'WebRequestResponse_BlogManagerBPOConstr.html' с результатами теста; обычно этот файл можно открыть в веб-браузере для просмотра его содержимого.

Спасибо

РЕДАКТИРОВАТЬ: @Mark, это один из TestMethods, созданных дизайнером

/

// <summary>
        ///A test for BlogManagerBPO Constructor
        ///</summary>
        // TODO: Ensure that the UrlToTest attribute specifies a URL to an ASP.NET page (for example,
        // http://.../Default.aspx). This is necessary for the unit test to be executed on the web server,
        // whether you are testing a page, web service, or a WCF service.
        [TestMethod()]
        [HostType("ASP.NET")]
        [AspNetDevelopmentServerHost("D:\\WorkingCopies\\MyProject\\Engine", "/")]
        [UrlToTest("http://localhost:8936/")]
        public void BlogManagerBPOConstructorTest()
        {
            BlogManagerBPO target = new BlogManagerBPO();
            Assert.Inconclusive("TODO: Implement code to verify target");
        }

Ответы [ 4 ]

5 голосов
/ 12 января 2010

Сообщение об исключении, которое вы получаете, вовсе не звучит так, как будто это юнит-тест. Вместо этого вы пытаетесь запустить набор веб-тестов Visual Studio?

Для модульного тестирования вы должны просто иметь возможность создавать экземпляры классов бизнес-логики и тестировать их без вмешательства среды выполнения ASP.NET.

В MsTest это может выглядеть так:

[TestMethod]
public void Test5()
{
    var sut = new Thing();
    var expectedResult = new object();
    sut.Bar = expectedResult;
    var actual = sut.Bar;
    Assert.AreEqual(expectedResult, actual);
}

(возможно, не самый захватывающий тест, хотя ...)

Специфика ASP.NET нигде не найдена.

Лучше всего это обеспечить, если вы поместите бизнес-логику в отдельную библиотеку и убедитесь, что она не ссылается на System.Web и т. Д.

2 голосов
/ 07 декабря 2011

Установите атрибут UrlToTest для теста Url In. Как:

[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\xx\\xx\\Documents\\Visual Studio 2010\\Projects\\xx\\xx", "/")]
[UrlToTest("http://localhost:xxx/examples.aspx")]
[DeploymentItem("examples.dll")]
1 голос
/ 24 января 2012

Или, как сказал Марк, избавься от
[HostType("ASP.NET")] [AspNetDevelopmentServerHost("C:\xx\xx\Documents\Visual Studio 2010\Projects\xx\xx", "/")] [UrlToTest("http://localhost:xxx/examples.aspx")] [DeploymentItem("examples.dll")] Пытался использовать его в проекте MVC, и он не прошел, пока я от него не избавился

0 голосов
/ 20 июля 2017

Просто проверьте, добавили ли вы app.config в ваш тестовый проект и имеет ли он необходимые настройки из вашего web.config (из проекта WebService).

...