![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Генерация данных
Кроме всего прочего, мы можем и не удалять базу данных после пробегов теста. (переписать)Я добавлю 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 и внутренних процессов при разработке программ позволяет избежать множества ошибок. Написание тестов – не панацея от всех бед, это инструмент, и важно правильно им пользоваться..
|