Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nette Tester / Posobota
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Filip Procházka
April 28, 2013
Technology
0
230
Nette Tester / Posobota
Filip Procházka
April 28, 2013
Tweet
Share
More Decks by Filip Procházka
See All by Filip Procházka
Evolving architecture
fprochazka
0
230
Value objects in PHP
fprochazka
1
220
Jak psát testy na REST API
fprochazka
0
110
V gitu se nic neztratí
fprochazka
0
390
Co se PHP programátor může naučit od Javy?
fprochazka
1
130
4 roky remote
fprochazka
1
87
Před čím tě Nette ani Symfony neochrání
fprochazka
0
150
Nejlepší cache je žádná cache
fprochazka
0
130
Doctrine: co dělat, když entity nestačí
fprochazka
0
72
Other Decks in Technology
See All in Technology
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
140
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
0
920
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
380
Tebiki Engineering Team Deck
tebiki
0
24k
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
2
200
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
230
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.4k
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.5k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
190
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
The Language of Interfaces
destraynor
162
26k
Faster Mobile Websites
deanohume
310
31k
BBQ
matthewcrist
89
10k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
120
Code Review Best Practice
trishagee
74
20k
Technical Leadership for Architectural Decision Making
baasie
1
240
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
170
What does AI have to do with Human Rights?
axbom
PRO
0
2k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
290
Transcript
Nette/Tester Filip Procházka @HosipLan
None
Proč PHPUnit ne?
Kdyby/Framework Doctrine Events Console Redis Facebook Replicator
Příliš mnoho abstrakce
Špatně se rozšiřuje
Statika
Proč Nette/Tester?
Každý test je php script - snadné debuggování - otestujete
neotestovatelné - fatal errory - http hlavičky - sušenky
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
Minimalistické api - Připomíná PHPUnit - TestCase::testExpectation() - @dataProvider -
TestCase ale není povinný - Assert::true($result)
Napsal ho Davídek ;)
Jak začít?
Instalace composer.json "require-dev": { "nette/tester": "@dev" } $ composer update
--dev
První test tests/Kdyby/example.phpt <?php // Hello World! if (2*2 !==
4) exit(1);
Zkusíme spustit $ php . /vendor/nette/tester/T ester/tester.php -j30 ./tests/
None
tests/bootstrap.php <?php include __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);
github.com/nette/sandbox github.com/nette/nette Více na:
Asserty <?php require __DIR__ . '/../bootstrap.php'; Assert::true(2*2 === 4); Assert::same("a",
"a"); Assert::null(NULL);
Asserty <?php Assert::throws(function () { throw new Exception("Hello"); }, 'Exception',
"Hello");
Asserty <?php Assert::match( "%a% %d%.%d%", "Nette 2.0" );
Metadata <?php /** * Test: Nette\Diagnostics\Debugger * eval error in
HTML. * * @author David Grudl * @package Nette\Diagnostics * @assertCode 500 */
TestCase <?php class ComputationTest extends Tester\TestCase { public function testMath()
{ Assert::true(2*2 === 4); } } (new ComputationTest())->run();
TestCase <?php class ComputationTest extends Tester\TestCase { protected function setUp(){}
protected function tearDown(){}
TestCase <?php class ComputationTest extends Tester\TestCase { function dataString(){ return
[["a", "a"], ["b", "b"]]; } /** @dataProvider dataString */ function testString($a, $b) {}
DomQuery <?php $dom = Tester\DomQuery::fromHtml($html); Assert::true( $dom->has('input[name="username"]') ); Assert::true( $dom->has('input[name="password"]')
);
Code Coverage <?php // tests/bootstrap.php if (extension_loaded('xdebug')) { xdebug_disable(); Tester\CodeCoverage\Collector::start(
__DIR__ . '/coverage.dat' ); }
Code Coverage $ php ./vendor/nette/tester/ Tester/coverage-report.php -c tests/Kdyby/coverage.dat -s ./src/Kdyby/Redis/
-t "Kdyby/Redis"
None
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
None
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 :(
Dotazy?