+ All Categories
Home > Technology > Nette Tester / Posobota

Nette Tester / Posobota

Date post: 14-Dec-2014
Category:
Upload: filip-prochazka
View: 2,315 times
Download: 8 times
Share this document with a friend
Description:
 
34
Nette/Tester Filip Procházka @HosipLan
Transcript
Page 1: Nette Tester / Posobota

Nette/TesterFilip Procházka @HosipLan

Page 2: Nette Tester / Posobota
Page 3: Nette Tester / Posobota

Proč PHPUnit ne?

Page 4: Nette Tester / Posobota

Kdyby/FrameworkDoctrineEvents

ConsoleRedis

FacebookReplicator

Page 8: Nette Tester / Posobota

Proč Nette/Tester?

Page 9: Nette Tester / Posobota

Každý test je php script- snadné debuggování- otestujete neotestovatelné

- fatal errory- http hlavičky- sušenky

Page 10: Nette Tester / Posobota

Vždy paralelní- každý test ve vlastním vlákně- maximální izolace testů- lze spouštet XY testů zároveň- je možné je zámkem serializovat

Page 11: Nette Tester / Posobota

Minimalistické api- Připomíná PHPUnit

- TestCase::testExpectation()- @dataProvider

- TestCase ale není povinný- Assert::true($result)

Page 12: Nette Tester / Posobota

Napsal ho Davídek ;)

Page 13: Nette Tester / Posobota

Jak začít?

Page 14: Nette Tester / Posobota

Instalacecomposer.json

"require-dev": { "nette/tester": "@dev"}

$ composer update --dev

Page 15: Nette Tester / Posobota

První testtests/Kdyby/example.phpt

<?php

// Hello World!if (2*2 !== 4) exit(1);

Page 16: Nette Tester / Posobota

Zkusíme spustit

$ php ./vendor/nette/tester/Tester/tester.php -j30 ./tests/

Page 17: Nette Tester / Posobota
Page 18: Nette Tester / Posobota

tests/bootstrap.php<?phpinclude __DIR__ . '/../vendor/autoload.php';

Tester\Helpers::setup();class_alias('Tester\Assert', 'Assert');date_default_timezone_set('Europe/Prague');

define('TEMP_DIR', __DIR__ . '/tmp/' . getmypid());

Tester\Helpers::purge(TEMP_DIR);

Page 19: Nette Tester / Posobota

github.com/nette/sandboxgithub.com/nette/nette

Více na:

Page 20: Nette Tester / Posobota

Asserty<?php

require __DIR__ . '/../bootstrap.php';

Assert::true(2*2 === 4);Assert::same("a", "a");Assert::null(NULL);

Page 21: Nette Tester / Posobota

Asserty<?php

Assert::throws(function () {throw new Exception("Hello");

}, 'Exception', "Hello");

Page 22: Nette Tester / Posobota

Asserty<?php

Assert::match("%a% %d%.%d%","Nette 2.0"

);

Page 23: Nette Tester / Posobota

Metadata<?php

/** * Test: Nette\Diagnostics\Debugger * eval error in HTML. * * @author David Grudl * @package Nette\Diagnostics * @assertCode 500 */

Page 24: Nette Tester / Posobota

TestCase<?php

class ComputationTest extends Tester\TestCase {public function testMath() {Assert::true(2*2 === 4);

}}

(new ComputationTest())->run();

Page 25: Nette Tester / Posobota

TestCase<?php

class ComputationTest extends Tester\TestCase {

protected function setUp(){}protected function tearDown(){}

Page 26: Nette Tester / Posobota

TestCase<?php

class ComputationTest extends Tester\TestCase {

function dataString(){return [["a", "a"], ["b", "b"]];

}/** @dataProvider dataString */function testString($a, $b) {}

Page 27: Nette Tester / Posobota

DomQuery<?php

$dom = Tester\DomQuery::fromHtml($html);

Assert::true( $dom->has('input[name="username"]')

);

Assert::true($dom->has('input[name="password"]')

);

Page 28: Nette Tester / Posobota

Code Coverage

<?php // tests/bootstrap.php

if (extension_loaded('xdebug')) {xdebug_disable();Tester\CodeCoverage\Collector::start(

__DIR__ . '/coverage.dat');

}

Page 29: Nette Tester / Posobota

Code Coverage

$ php ./vendor/nette/tester/Tester/coverage-report.php -c tests/Kdyby/coverage.dat -s ./src/Kdyby/Redis/ -t "Kdyby/Redis"

Page 30: Nette Tester / Posobota
Page 31: Nette Tester / Posobota

Spouštění z IDE- testy jsou obyčejné php scripty

- right click and run- right click and debug

- test runner je obyčejný script- right click and run

Page 32: Nette Tester / Posobota
Page 33: Nette Tester / Posobota

Nevýhody...- integrace do nástrojů?- někdy málo info ve zprávách assertů

- "array(2) is not equal to array(2)"- nemá výchozí mockovací nástroj

- github.com/janmarek/mockista- chybí podpora Selenia- proužek s výsledkem nemění barvu :(

Page 34: Nette Tester / Posobota

Dotazy?


Recommended