javascript unit testing using jasmine and tools

Post on 26-Jun-2015

802 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

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

top related