Transcript
Page 1: Javascript Unit Testting (PHPBenelux 2011-05-04)

Javascript Unit Testing

Introduction to QUnit & JsTestDriver

Wednesday 4 May 2011

Page 2: Javascript Unit Testting (PHPBenelux 2011-05-04)

Tom Van Herreweghe

PHP developer

ZCE 5.0 & 5.3

I like Javascript

http://blog.theanalogguy.be

@miljar

Wednesday 4 May 2011

Page 3: Javascript Unit Testting (PHPBenelux 2011-05-04)

Overview

Introduction to QUnit

Introduction to JsTestDriver

Wednesday 4 May 2011

Page 4: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit

Wednesday 4 May 2011

Page 5: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit

JS Unit Testing library

JsUnit, DOH, YUI Test, ...

JQuery

http://docs.jquery.com/Qunit

Wednesday 4 May 2011

Page 6: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit setup

Demo

Wednesday 4 May 2011

Page 7: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit structure

module(‘name’[, {lifecycle}])

Wednesday 4 May 2011

Page 8: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit structure

test(‘name’[, expected], test-code)

Wednesday 4 May 2011

Page 9: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit structure

Demo

Wednesday 4 May 2011

Page 10: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

ok(state[, ‘message’])

Wednesday 4 May 2011

Page 11: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

equal(actual, expected[, ‘message’])

corresponds with: ==Wednesday 4 May 2011

Page 12: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

notEqual(actual, expected[, ‘message’])

corresponds with: !=Wednesday 4 May 2011

Page 13: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

Demo

Wednesday 4 May 2011

Page 14: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

deepEqual(actual, expected[, ‘message’])

corresponds with: === (recursive)Wednesday 4 May 2011

Page 15: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

notDeepEqual(actual, expected[, ‘message’])

corresponds with: !== (recursive)Wednesday 4 May 2011

Page 16: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

Demo

Wednesday 4 May 2011

Page 17: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

raises(function[, expected][, ‘message’])

Wednesday 4 May 2011

Page 18: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

Demo

Wednesday 4 May 2011

Page 19: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

the good: callbacks

the bad: timers

the ugly: currently not in QUnitAdapter for JsTestDriver

Wednesday 4 May 2011

Page 20: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

Timers: hard to predictrunning time + slows down

Wednesday 4 May 2011

Page 21: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

Callbacks: run assertions

Wednesday 4 May 2011

Page 22: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

Currently not supportedin QUnitAdapter

Wednesday 4 May 2011

Page 23: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

stop()

start()

expect()

asyncTest()

Wednesday 4 May 2011

Page 24: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

Demo

Wednesday 4 May 2011

Page 25: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Wednesday 4 May 2011

Page 26: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Testrunner for your Unit Tests

Written in Java

Client / Server architecture

http://code.google.com/p/js-test-driver

Wednesday 4 May 2011

Page 27: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Wednesday 4 May 2011

Page 28: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Custom syntax

Need mapping from QUnit to JsTestDriver

Some QUnit functionalities not (yet) available

Wednesday 4 May 2011

Page 29: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

module()

test()

ok()

equals()

same() (old name for deepEqual())

Wednesday 4 May 2011

Page 30: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Fetch JAR fromhttp://code.google.com/p/js-test-driver/downloads/list

Wednesday 4 May 2011

Page 31: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Run serverjava -jar /path/to/JsTestDriver-1.3.2.jar --port 4224

Wednesday 4 May 2011

Page 32: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Point browser(s) tohttp://localhost:4224

Wednesday 4 May 2011

Page 33: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Demo

Wednesday 4 May 2011

Page 35: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Create config

Wednesday 4 May 2011

Page 36: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Run testsjava -jar /path/to/JsTestDriver-1.3.2.jar --config

/path/to/jsTestDriver.conf --tests all

Wednesday 4 May 2011

Page 37: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Demo

Wednesday 4 May 2011

Page 38: Javascript Unit Testting (PHPBenelux 2011-05-04)

Questions?

Read more?

Slideshare

Joind.in

Githubhttps://github.com/Miljar/PHPBenelux-BE-may

Wednesday 4 May 2011

Page 39: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Wednesday 4 May 2011

Page 40: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Download plugin fromhttp://code.google.com/p/js-test-driver/downloads/list

Wednesday 4 May 2011

Page 41: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Include plugin in config

Wednesday 4 May 2011

Page 42: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Add flags when executing tests--testOutput /path/to/outputfolder

Wednesday 4 May 2011

Page 43: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Install LCOV

Wednesday 4 May 2011

Page 44: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Generate HTMLgenhtml /path/to/jsTestDriver.conf-coverage.dat

Wednesday 4 May 2011

Page 45: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Demo

Wednesday 4 May 2011

Page 46: Javascript Unit Testting (PHPBenelux 2011-05-04)

Some links

QUnithttp://docs.jquery.com/Qunit

JsTestDriverhttp://code.google.com/p/js-test-driver/

CI with JsTestDriverhttp://j.mp/acO6QI

Wednesday 4 May 2011


Top Related