Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Nette Tester / Posobota
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Filip Procházka
April 28, 2013
Technology
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nette Tester / Posobota
Filip Procházka
April 28, 2013
More Decks by Filip Procházka
See All by Filip Procházka
Evolving architecture
fprochazka
0
260
Value objects in PHP
fprochazka
1
250
Jak psát testy na REST API
fprochazka
0
140
V gitu se nic neztratí
fprochazka
0
420
Co se PHP programátor může naučit od Javy?
fprochazka
1
160
4 roky remote
fprochazka
1
95
Před čím tě Nette ani Symfony neochrání
fprochazka
0
160
Nejlepší cache je žádná cache
fprochazka
0
140
Doctrine: co dělat, když entity nestačí
fprochazka
0
89
Other Decks in Technology
See All in Technology
go-sqletch
moznion
0
140
Classmethod Company Deck
satoshi7
1
680
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
430
Rust で関数型ドメインモデリング
takonda
0
140
re:Invent初参加で変わったこと、2回目にやってみたいこと(JAWS-UG彩の国埼玉 #12)
mhrtech
2
220
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
120
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
パッチ更新でterraform initが落ちた日
grimoh
1
140
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
160
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
180
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
Scaling GitHub
holman
464
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Embracing the Ebb and Flow
colly
88
5.2k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Optimizing for Happiness
mojombo
378
71k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
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?