На этом уроке мы создадим TestRoom() для класса Room. Это будет одна функция, в которой мы последовательно будем вызывать все методы класса Room и проверять, на сколько правильно и корректно они отработали. В конце урока мы выполним тест пошагово.
Дата отправки отчёта:
27 июня 2017 г.
Задание выполнено: за
1 час. 00 мин.
Чему научился:
1 Разбирать в цикле объект DataRow. 2 Писать тесты или точнее более менее начинать понимать, как их писать и как подлезть к их написанию. 3 Никогда не думал, что на тестах можно ставить точки останова и отлаживать их как прогу. 4 Находить ошибки в коде по заранее правильно написанным тестам. 5 Узнал про extract method. Все никак не мог понять, что это и как использовать.
Что было сложным:
Понять логику тестов. Без предварительной подготовки понять чужую логику очень сложно. Найти ошибки в коде функций модели.
Комментарии:
Я сейчас в овощном состоянии. 15 минут прошло из 30, а для меня кажется уже час. Решил вот сразу написать, пока не забыл.
Нашел, почему тест не проходит. Похоже весь смысл тестов теряется, потому что сама тестируемая функция содержит глюки. Нельзя написать заранее правильный тест, если тестируемая функция не была проверена руками первый раз и логика ее работы не подтвердилась логикой теста.
Короче функция SelectRoom(long room_id) Result Message: Test method TestHotel.DBaseTest.TestRooms threw exception: System.ArgumentException: Column 'step' does not belong to table table. Строка 82 в коде той функции. this.step = int.Parse(room.Rows[0]["step"].ToString());
Я на нее смотрел как баран на ворота. Где тут что не так может быть? Рядом похожая строка такая же и все нормально. Стал смотреть, чего оно там про Step говорит. Может тип данных в самой структуре бд не тот? Вроде инт стоит. Поднял я глаза повыше на строку и тут до меня дошло.- step забыл написать. do room = sql.Select("SELECT id, room, beds, floor, info FROM room "
Поэтому я сторонник выбирать *, если надо выбрать все поля. Вобщем сообщения об ошибках указывают совсем не туда, где эта ошибка есть. Надо смотреть на несколько строк назад. Да и само сообщение не очень информативное.
Все же еще далеко даже до зачатков искусственного интеллекта, который бы ошибки показывал точнее. Никаких восстаний машин еще долго не будет.
Вобщем за этот урок я довольно много узнал. Даже не ожидал.
Научился: Создавать модульные тесты. Трудности: Сделать, чтобы все тесты корректно отрабатывали. Все нормально. У меня получилось разбить метод для тестирования таблицы "Room" на отдельные составляющие - методы. И все благополучно работает.