Как написать модульные тесты для веб-приложений и элементов управления - PullRequest
1 голос
/ 07 декабря 2008

Я только что узнал о модульном тестировании. Я использую NUnit для создания тестов для проекта VB.NET.

Проект, над которым я работаю, является частью фреймворка, который будет использоваться людьми, которые создают сайты ASP.NET. Он включает базовый класс (который наследует System.Web.HttpApplication), от которого пользователи моей инфраструктуры будут наследовать свой класс приложения.

Проект также содержит несколько составных элементов управления.

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

В случае базового класса приложения, должен ли проект модульного теста включать класс, который наследуется от него, а затем проверять его?

Любые указатели будут оценены!

Спасибо.

Ответы [ 4 ]

1 голос
/ 07 декабря 2008

Я бы протестировал базовый класс приложения косвенно, создав подкласс и протестировав его, как вы сказали.

Для контроля я бы использовал Selenium: http://selenium.seleniumhq.org/.

0 голосов
/ 08 марта 2018

Я смог сделать это, создав заглушку для веб-элемента управления, которую я тестирую, и вызвав защищенный метод RenderContents (), и проверив HTML:

[Test]
public void ConditionQueryBuilderTest_RendersProperHtml()
{
    var sw = new StringWriter();
    var queryBuilder = new ConditionQueryBuilderStub
    {
        ID = "UnitTestbuilder",
        QueryBuilderURL = @"\SomeAspxPage\SomeWebMethod",
        ResetQueryBuilderURL = @"\SomeAspxPage\OnQueryBuilderReset",
        FilterValuesCollection = new Dictionary<int, string> { {15, "Some Condition"}}
    };
    queryBuilder.RenderAllContents(new HtmlTextWriter(sw)); // This is a method in my stub that exposes RenderContents()

    AppendLog(sw.ToString());

    Assert.AreEqual(ExpectedHtml, sw.ToString());
}
0 голосов
/ 07 декабря 2008

Больше не поддерживается, но есть NUnitAsp .

[Test] 
public void TestExample() 
{ 
   // First, instantiate "Tester" objects: 
   LabelTester label = new LabelTester("textLabel"); 
   LinkButtonTester link = new LinkButtonTester("linkButton"); 

   // Second, visit the page being tested: 
   Browser.GetPage("http://localhost/example/example.aspx"); 

   // Third, use tester objects to test the page: 
   Assert.AreEqual("Not clicked.", label.Text); 
   link.Click(); 
   Assert.AreEqual("Clicked once.", label.Text); 
   link.Click(); 
   Assert.AreEqual("Clicked twice.", label.Text); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...