javascript unit testing using jasmine and tools
TRANSCRIPT
JavaScript Unit testingusing jasmine and tools
По месту исполнения кода
Серверный JSjasmine-node
Клиентский JSбраузер?
jasmine-node
1. npm install jasmine-node -g2. jasmine-node specs/
*-spec.js
можно обернуть запуск тестов в package.json
jasmine-nodeХорошо Плохо
1) Есть полезные опций: --autorun --junitreport
1) Если dom - то лучше отказаться
2) не все опции работают как хотелось бы
browser?
Headless:1. zombie.js (эмуляция)2. PhantomJS (webkit)
Real browser:3. jsTestDriver4. testacular5. selenium webdriver
headless
1. zombie.js2. PhantomJS
zombie.js
1. npm install zombie2. writing async tests using jasmine-node
Хорошо Плохо1) fast2) headless
1) Just emulation...2) using jasmine-node
zombie.js
thanks, but no!
PhantomJS
1. npm install phantomjs -g
1. grunt-jasmine-runner2. phantom-jasmine
Хорошо Плохо1) fast2) headless
1) Все инструменты не очень комфортны для использования*
Только WebKit
PhantomJS
*кроме testacular, но о нем позже
Browsers for real
Хорошо Плохо1) Хорошая документация2) Зрелая библиотека с устоявшимся API3) Отличная с IDE
1) Не на github2) Говорят работает не стабильно3) Нужна JVM
jsTestDriver
Testacular
1. npm install testacular@canary -g2. testacular init <config_name>3. testacular start <config_name>
Хорошо Плохо1) Все браузеры + phantomjs2) Приличная документация3) Слежение за изменением файлов4) Режим сервера/один прогон5) Легкая интеграция с IDE6) JUnit + code coverage
1) Необходимо заранее продумывать разрешение зависимостей js файлов
Testacular
Selenium webdriver
1. https://github.com/larrymyers/jasmine-reporters/tree/master/src
○ jasmine.junit_reporter.js (допиливаем)
2. jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('', false)
);
Selenium webdriver
3. спеки в листьях
4. selenium ->
return jasmine.JUnitXmlReporter.output
http://jenkins.bizaccount.test:8081/tests-
http://jenkins.bizaccount.test:8081/tests/profile
Хорошо Плохо1) Универсально
2) Зависимости JS файлов решаются на уровне приложения
3) Разработчики вообще не замарачиваются организацией тестирования
1) Отностильно долгое время feedback'а2) Нет кучи плюшек, в том числе, пока что coverage
Selenium webdriver
Заключение
1. Если headless - то предпочтительнее PhantomJS
2. Real Browser лучше
3. testacular лучше
СсылкиСтатья содержит много полезных ссылок на почти все упомянутое:
1. http://anykeytocreate.blogspot.ru/2012/11/unittesting-for-javascript-environment.html
Jasmine:
2. http://pivotal.github.com/jasmine/
Headless:
3. http://zombie.labnotes.org/4. http://phantomjs.org/
Real Browsers:
5. http://code.google.com/p/js-test-driver/6. http://vojtajina.github.com/testacular/7. http://seleniumhq.org/docs/03_webdriver.jsp
Пообсуждать в confluence
8. http://confluence.dvlp.2gis.local/pages/viewpage.action?pageId=104465152