04.11.2012, 12:08
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Кто как оформляет юнит тесты
При разработке большого объёма кода использование юнит тестов является чуть ли не обязательным условием относительной стабильности релизов, но чем больше пишется тестов, тем сложнее их поддерживать и ориентироваться. В попытке решения этой проблемы я стал разбивать тесты на тематические группы по файлам ( https://github.com/kobezzza/Collecti...e/master/tests как пример), но такой подход всё равно мне не очень нравится, т.к. из одной большой помойки мы делаем много маленьких, но главным образом не нравится то, что получается, что тест как то оторван от тестируемого кода и из-за этого, когда я обнаруживаю новую багу, которая не покрыта тестом, я частенько ленюсь писать для неё новый тест, т.к. нужно открыть нужный файл (или создать новый!), откладываю на потом и когда приходит день X начинаю писать кучу тестов, при этом частенько забывая некоторые тесты.
Я одно время пытался писать тесты в блоке JSDoc, но такой подход мне ещё больше не понравится, т.к. и без того большие куски комментов становятся просто огромными. Получается замкнутый круг: в файле писать не удобно и вне файла писать не удобно. Есть идея написать плагин для своей ИДЕ, которая будет сканировать JSDoc, находить ссылку на файл тестов и открывать окошко редактирования по клику на ссылку, кажется что так будет удобно.
Может кто может поделится более удобными паттернами юнит тестирования?
|
|
04.11.2012, 14:30
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
а что, если сделать один index.html для всех тестов, а сами тесты будут типа такого ?
sort.js
export({
title: "Sort testing",
beforeStart: function () { /* чот-то делается перед тестом - напр. создаются коллекции */ },
body: function () { /* тело теста */ },
check: function () { /* проверка прохождения теста */ },
afterEnd: function () { /* что делаем дальше */ }
});
|
|
04.11.2012, 14:49
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от melky
|
а что, если сделать один index.html для всех тестов, а сами тесты будут типа такого ?
sort.js
export({
title: "Sort testing",
beforeStart: function () { /* чот-то делается перед тестом - напр. создаются коллекции */ },
body: function () { /* тело теста */ },
check: function () { /* проверка прохождения теста */ },
afterEnd: function () { /* что делаем дальше */ }
});
|
Не, так совсем плохо, файл будет расти по арифметической прогрессии, визуальное восприятие лучше, когда буков мало Я для того и разбил их на файлики, чтобы попытаться структурировать, но следует отметить, что разделение на разделы в одном файле я тоже использую, и у QUnit (либы, что я юзаю) для этого есть АПИ.
У меня в голове крутится идея, о плагине для ИДЕ, по аналогии с ZenCoding, мол пишеш @addTest в JSDoc, жмёшь хот кей, и в папке где лежит файл с кодом создаётся новый файл с названием как у тестируемой функции или метода, @addTest заменяется на src файла и при двойном клике по нему открывается новая вкладка ИДЕ с редактированием теста. Как идея?
Последний раз редактировалось kobezzza, 04.11.2012 в 14:55.
|
|
04.11.2012, 15:03
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от kobezzza
|
файл будет расти по арифметической прогрессии
|
почему? это пример одного теста - на сортировку.
Сообщение от kobezzza
|
Как идея
|
удобно, но было бы лучше смержить этот способ с моим
|
|
04.11.2012, 15:09
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от melky
|
почему? это пример одного теста - на сортировку
|
Один метод может спокойно иметь от 1 до 100 и более тестов, а общее количество тестов на проект может быть спокойно больше 10-ти тысяч. Если все тесты буду лежать в одном файлике, то редактирование вручную этого файла может стать проблемой. На работе у нас уже обычная ситуация, что делаешь коммит и нечаянно роняешь 200-300 тестов
|
|
|
|