Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Генерация данных






Кроме всего прочего, мы можем и не удалять базу данных после пробегов теста. (переписать)Я добавлю GenerateData проект в папку Test, но подробно рассматривать мы его не будем, просто чтобы был. Он достаточно тривиальный. Суть его – есть некоторые наименования, и мы используем их для генерации. Например, для генерации фамилии используются фамилии американских президентов (зная их, мы сразу отличаем их от других фамилий, которые скорее будут реальными).

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

Создадим 100 пользователей и потом посмотрим на них:

[Test]

public void CreateUser_Create100Users_NoAssert()

{

var repository = DependencyResolver.Current.GetService< IRepository> ();

var controller = DependencyResolver.Current.GetService< LessonProject.Areas.Default.Controllers.UserController> ();

 

var httpContext = new MockHttpContext().Object;

 

var route = new RouteData();

 

route.Values.Add(" controller", " User");

route.Values.Add(" action", " Register");

route.Values.Add(" area", " Default");

 

ControllerContext context = new ControllerContext(new RequestContext(httpContext, route), controller);

controller.ControllerContext = context;

 

controller.Session.Add(CaptchaImage.CaptchaValueKey, " 1111");

 

var rand = new Random((int)DateTime.Now.Ticks);

for (int i = 0; i < 100; i++)

{

var registerUserView = new UserView()

{

ID = 0,

Email = Email.GetRandom(Name.GetRandom(), Surname.GetRandom()),

Password = " 123456",

ConfirmPassword = " 123456",

Captcha = " 1111",

BirthdateDay = rand.Next(28) + 1,

BirthdateMonth = rand.Next(12) + 1,

BirthdateYear = 1970 + rand.Next(20)

};

controller.Register(registerUserView);

}

}

В IntegrationTestSetupFixture.cs отключим удаление БД после работы (/Setup/IntegrationTestSetupFixture.cs):

protected static bool removeDbAfter = false;

В Web.config установим соединение с тестовой БД:

< add name=" ConnectionString" connectionString=" Data Source=SATURN-PC; Initial Catalog=LessonProject_20130314_111020; Integrated Security=True; Pooling=False" providerName=" System.Data.SqlClient" />

И запустим сайт:

Итог

В этом уроке мы рассмотрели:

· Принципы TDD и когда они не срабатывают

· NUnit и как с ним работать

· Mock и как с ним работать

· Unit-тесты и как этот инструмент позволяет улучшить нам качество кода

· Integration-тесты, и как мы можем их использовать

Тестирование – это очень большая область, это даже отдельная профессия и склад ума (не совсем программистский). И качество кода будет зависеть не только от применения технологий, хотя, бесспорно, соблюдение логических принципов TDD и внутренних процессов при разработке программ позволяет избежать множества ошибок. Написание тестов – не панацея от всех бед, это инструмент, и важно правильно им пользоваться..
Мы обошли вниманием тестирование клиентской части, и честно говоря, я не знаю, как это должно происходить. В JQuery только в октябре 2011го начали развивать проект qUnit, но информации по нему почти нет.







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.