Jak testujete? Nette Tester vs. PHPUnit showdown

3 years ago

looky
Member | 100
+
0
-

Zdravím. Aktuálně ve firmě používáme k testování Nette Tester, ale zvažujeme přechod na PHPUnit, a rádi bychom znali názory a zkušenosti ostatních než se do něčeho pustíme. Jak testujete vy? Jak řešíte situace, kdy váš nástroj něco neumí (například přidání vlastních assertů, pluginů..). Co používáte k mockování závislostí, a jste s tím spokojeni? Jak jste na tom se zapojováním nových programátorů, myslíte že je jednodušší naučit se tester nebo unit?

TLDR Má smysl věnovat čas přechodu na PHPUnit, nebo zůstat u Testeru a případně ho dále rozvíjet (ve formě pull requestů), pokud nám v něm něco nebude stačit.

3 years ago

Tomáš Votruba
Moderator | 1154
+
+1
-

Ahoj, PHPUnit má jen jinou syntaxi (asserty jsou většinou stejné, má jich pár navíc), takže přejít není složité. Spíš bych zvážil důvody, proč vlastně přecházet.

Pro mě to bylo přiblížení se světovému standardu, snazší přístup k open-source, rychlejší pochopení jak open-source projekty fungují a snazší opravda v případě nutnosti.
Např. rozbije se něco v Guzzlu ⇒ mrknu na testy ⇒ je to PHPUnit ⇒ pošlu failující test – někdo to opraví. V případě Nette Testeru tohle tak jednoduché není.

Takže: co ti teď chybí a co potřebuješ?

3 years ago

enumag
Member | 2128
+
+8
-

Osobně používám Codeception. Běží nad PHPUnit a přináší nějaké věci navíc – např. poměrně jednoduché akceptační testy.

Mezi PHPUnit a Nette Testerem bych volil Tester. Mezi Testerem a Codeception volím Codeception. PHPUnit neumí dost věcí navíc aby mi to obhájilo ztrátu jednoduchosti Testeru. Codeception už ano.

K mockování zásadně Mockery, ale také se mi poměrně líbilo Prophecy (nezkoušel jsem).

Last edited by enumag (2016-01-26 07:36)

3 years ago

pata.kusik111
Member | 72
+
0
-

Souhlasím s @enumag ohledně Codeception. Nicméně k mockování bych ještě dodal jako možnost AspectMock, který mockuje pomocí AOP. Došáhne to na věci, na které je Mockery krátké. V současnosti používám kombinaci Mockery a AspectMock podle potřeby.