JavaScript Unit Testing Using Jasmine And Tools

19
JavaScript Unit testing using jasmine and tools

Transcript of JavaScript Unit Testing Using Jasmine And Tools

Page 1: JavaScript Unit Testing Using Jasmine And Tools

JavaScript Unit testingusing jasmine and tools

Page 2: JavaScript Unit Testing Using Jasmine And Tools

По месту исполнения кода

Серверный JSjasmine-node

Клиентский JSбраузер?

Page 3: JavaScript Unit Testing Using Jasmine And Tools

jasmine-node

1. npm install jasmine-node -g2. jasmine-node specs/

*-spec.js

можно обернуть запуск тестов в package.json

Page 4: JavaScript Unit Testing Using Jasmine And Tools

jasmine-nodeХорошо Плохо

1) Есть полезные опций: --autorun --junitreport

1) Если dom - то лучше отказаться

2) не все опции работают как хотелось бы

Page 5: JavaScript Unit Testing Using Jasmine And Tools

browser?

Headless:1. zombie.js (эмуляция)2. PhantomJS (webkit)

Real browser:3. jsTestDriver4. testacular5. selenium webdriver

Page 6: JavaScript Unit Testing Using Jasmine And Tools

headless

1. zombie.js2. PhantomJS

Page 7: JavaScript Unit Testing Using Jasmine And Tools

zombie.js

1. npm install zombie2. writing async tests using jasmine-node

Page 8: JavaScript Unit Testing Using Jasmine And Tools

Хорошо Плохо1) fast2) headless

1) Just emulation...2) using jasmine-node

zombie.js

thanks, but no!

Page 9: JavaScript Unit Testing Using Jasmine And Tools

PhantomJS

1. npm install phantomjs -g

1. grunt-jasmine-runner2. phantom-jasmine

Page 10: JavaScript Unit Testing Using Jasmine And Tools

Хорошо Плохо1) fast2) headless

1) Все инструменты не очень комфортны для использования*

Только WebKit

PhantomJS

*кроме testacular, но о нем позже

Page 11: JavaScript Unit Testing Using Jasmine And Tools

Browsers for real

Page 12: JavaScript Unit Testing Using Jasmine And Tools

Хорошо Плохо1) Хорошая документация2) Зрелая библиотека с устоявшимся API3) Отличная с IDE

1) Не на github2) Говорят работает не стабильно3) Нужна JVM

jsTestDriver

Page 13: JavaScript Unit Testing Using Jasmine And Tools

Testacular

1. npm install testacular@canary -g2. testacular init <config_name>3. testacular start <config_name>

Page 14: JavaScript Unit Testing Using Jasmine And Tools

Хорошо Плохо1) Все браузеры + phantomjs2) Приличная документация3) Слежение за изменением файлов4) Режим сервера/один прогон5) Легкая интеграция с IDE6) JUnit + code coverage

1) Необходимо заранее продумывать разрешение зависимостей js файлов

Testacular

Page 15: JavaScript Unit Testing Using Jasmine And Tools

Selenium webdriver

1. https://github.com/larrymyers/jasmine-reporters/tree/master/src

○ jasmine.junit_reporter.js (допиливаем)

2. jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('', false)

);

Page 16: JavaScript Unit Testing Using Jasmine And Tools

Selenium webdriver

3. спеки в листьях

4. selenium ->

return jasmine.JUnitXmlReporter.output

http://jenkins.bizaccount.test:8081/tests-

http://jenkins.bizaccount.test:8081/tests/profile

Page 17: JavaScript Unit Testing Using Jasmine And Tools

Хорошо Плохо1) Универсально

2) Зависимости JS файлов решаются на уровне приложения

3) Разработчики вообще не замарачиваются организацией тестирования

1) Отностильно долгое время feedback'а2) Нет кучи плюшек, в том числе, пока что coverage

Selenium webdriver

Page 18: JavaScript Unit Testing Using Jasmine And Tools

Заключение

1. Если headless - то предпочтительнее PhantomJS

2. Real Browser лучше

3. testacular лучше

Page 19: JavaScript Unit Testing Using Jasmine And Tools

СсылкиСтатья содержит много полезных ссылок на почти все упомянутое:

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