PHPUnit

Post on 07-Aug-2015

61 views 3 download

Tags:

transcript

PHPUnitRinat Khabibiev

* www.ExigenServices.com

PHPUNIT: BEGINNING

Even good programmers make mistakes

* www.ExigenServices.com

PHPUNIT

• Beginning

• Installation

• Test Driven Development

• Parameterized Unit Testing

• Testing Exceptions

• Dependencies

• Fixtures

• Patterns and Antipatterns

Contents

* www.ExigenServices.com

PHPUNIT: BEGINNING

• easy to learn to write

• easy to write

• easy to read

• easy to execute

• quick to execute

• isolated

• composable

What should be the tests

* www.ExigenServices.com

PHPUNIT: BEGINNING

Very simple example

* www.ExigenServices.com

PHPUNIT: BEGINNING

Very simple example

* www.ExigenServices.com

PHPUNIT: BEGINNING

• assertEquals($expr1, $expr2, $fail_msg)

• assertTrue($expr, $fail_msg)

• assertFalse($expr, $fail_msg)

• assertInstanceOf($expected, $expr, $fail_msg)

• assertNull($expr, $fail_msg)

• assertEmpty($expr, $fail_msg)

• assertThat($expr, $constraint, $fail_msg)

Assertions

* www.ExigenServices.com

PHPUNIT: INSTALLATION

Installation using PEAR

cd <PHP_dir>go-pearpear upgrade PEARpear config-set auto_discover 1pear install pear.phpunit.de/PHPUnit

• PHP 5.2.7 - minimum

• PHP 5.3.9 - recommended

* www.ExigenServices.com

PHPUNIT: TEST DRIVEN DEVELOPMENT

~/models/Weekday.php

* www.ExigenServices.com

PHPUNIT: TEST DRIVEN DEVELOPMENT

~/tests/models/WeekdayTest.php

* www.ExigenServices.com

PHPUNIT: TEST DRIVEN DEVELOPMENT

Tests execution

~# cd <tests_dir>/models~# phpunit WeekdayTestPHPUnit 3.6.0 by Sebastian Bergmann.

..

Time: 0 seconds, Memory: 5.25Mb

OK (2 test, 0 assertion)

* www.ExigenServices.com

PHPUNIT: TEST DRIVEN DEVELOPMENT

Tests execution results. - successF - assertion failsE - error occursS - test skippedI - test incomplete or not implemented

* www.ExigenServices.com

PHPUNIT: TEST DRIVEN DEVELOPMENT

~/tests/models/WeekdayTest.php

* www.ExigenServices.com

PHPUNIT: TEST DRIVEN DEVELOPMENT

~/tests/models/WeekdayTest.php

* www.ExigenServices.com

PHPUNIT: TEST DRIVEN DEVELOPMENT

~/models/Weekday.php

* www.ExigenServices.com

PHPUNIT: PARAMETERIZED UNIT TESTING

~/tests/models/WeekdayTest.php

* www.ExigenServices.com

PHPUNIT: TESTING EXCEPTIONS

~/models/Weekday.php

* www.ExigenServices.com

PHPUNIT: TESTING EXCEPTIONS

~/tests/models/WeekdayTest.php

* www.ExigenServices.com

PHPUNIT: DEPENDENCIES

~/tests/models/WeekdayTest.php

* www.ExigenServices.com

PHPUNIT: FIXTURES

~/tests/models/WeekdayTest.php

* www.ExigenServices.com

PHPUNIT: FIXTURES

• setUpBeforeClass (once before all tests)

• setUp (before each test)

• assertPreConditions (before each test)

• assertPostConditions (after each successful test)

• tearDown (after each test)

• onNotSuccessfulTest (after each failed test)

• tearDownAfterClass (once after all tests)

All methods available

* www.ExigenServices.com

PHPUNIT: PATTERNS AND ANTIPATTERNS

Unit tests are for testing source code units

* www.ExigenServices.com

PHPUNIT: PATTERNS AND ANTIPATTERNS

• assertEquals($expr1, $expr2, $fail_msg)

• assertTrue($expr, $fail_msg)

• assertFalse($expr, $fail_msg)

• assertInstanceOf($expected, $expr, $fail_msg)

• assertNull($expr, $fail_msg)

• assertEmpty($expr, $fail_msg)

• assertThat($expr, $constraint, $fail_msg)

Assertions

* www.ExigenServices.com

PHPUNIT: PATTERNS AND ANTIPATTERNS

Somewhere in our application

* www.ExigenServices.com

PHPUNIT

The End