Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2012, 12:08
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Кто как оформляет юнит тесты
При разработке большого объёма кода использование юнит тестов является чуть ли не обязательным условием относительной стабильности релизов, но чем больше пишется тестов, тем сложнее их поддерживать и ориентироваться. В попытке решения этой проблемы я стал разбивать тесты на тематические группы по файлам (https://github.com/kobezzza/Collecti...e/master/tests как пример), но такой подход всё равно мне не очень нравится, т.к. из одной большой помойки мы делаем много маленьких, но главным образом не нравится то, что получается, что тест как то оторван от тестируемого кода и из-за этого, когда я обнаруживаю новую багу, которая не покрыта тестом, я частенько ленюсь писать для неё новый тест, т.к. нужно открыть нужный файл (или создать новый!), откладываю на потом и когда приходит день X начинаю писать кучу тестов, при этом частенько забывая некоторые тесты.
Я одно время пытался писать тесты в блоке JSDoc, но такой подход мне ещё больше не понравится, т.к. и без того большие куски комментов становятся просто огромными. Получается замкнутый круг: в файле писать не удобно и вне файла писать не удобно. Есть идея написать плагин для своей ИДЕ, которая будет сканировать JSDoc, находить ссылку на файл тестов и открывать окошко редактирования по клику на ссылку, кажется что так будет удобно.

Может кто может поделится более удобными паттернами юнит тестирования?
__________________
kobezzza
code monkey
Ответить с цитированием
  #2 (permalink)  
Старый 04.11.2012, 14:30
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

а что, если сделать один index.html для всех тестов, а сами тесты будут типа такого ?

sort.js
export({

    title: "Sort testing",

    beforeStart: function () { /* чот-то делается перед тестом - напр. создаются коллекции */ },

    body: function () { /* тело теста */ },

    check: function () { /* проверка прохождения теста */ },

    afterEnd: function () { /* что делаем дальше */ }

});
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2012, 14:49
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 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
code monkey

Последний раз редактировалось kobezzza, 04.11.2012 в 14:55.
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2012, 15:03
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от kobezzza
файл будет расти по арифметической прогрессии
почему? это пример одного теста - на сортировку.

Сообщение от kobezzza
Как идея
удобно, но было бы лучше смержить этот способ с моим
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2012, 15:09
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от melky Посмотреть сообщение
почему? это пример одного теста - на сортировку
Один метод может спокойно иметь от 1 до 100 и более тестов, а общее количество тестов на проект может быть спокойно больше 10-ти тысяч. Если все тесты буду лежать в одном файлике, то редактирование вручную этого файла может стать проблемой. На работе у нас уже обычная ситуация, что делаешь коммит и нечаянно роняешь 200-300 тестов
__________________
kobezzza
code monkey
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2012, 19:01
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

у меня для каждого модуля есть страница с документацией, тестами и бенчмарками. примерно такого вида: http://nin-jin.github.com/article/ar...le_dev.doc.xml
__________________
.ня
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2012, 00:31
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Написал плагинчик к своей ИДЕ, как и хотел, стало очень удобно.
Вот пример видео: http://screencast.com/t/bQ5El34Jmex.

Тут выложил свои плагинчики для Adobe DW (тестил тока на винде на CS6), а также улучшенный автокомплит по методам из JS 1.8.5
https://github.com/kobezzza/DWPlugins
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Кто знает как разрешить выполнения сценариев в Ie ? JsLoveR Общие вопросы Javascript 5 24.12.2009 19:25
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56
Может кто подсказать как можно сделать submit из левого фрейма в правый maxander Internet Explorer 1 28.11.2008 10:15