Debugování testů v Eclipse/XDebug
- petr.pavel
- Člen | 535
Čau lidi, mám dojem, že Eclipse tu nikdo nepoužívá, ale přesto to zkusím.
Pokouším se debugovat testy (Nette Test Framework v0.4). Vyrobil jsem si na to spouštěcí soubor, který v Eclipse zavolám pomocí předem definované konfigurace typu PHP CLI Application. Testy se mi spustí, v konzoli Eclipse pěkně vidím, jak fičí, ale Eclipse mi nezastaví na breakpointu.
Tady je ten spouštěcí skript, ale předpokládám, že v něm to není. Je to kopie RunTests.bat
<?php
$_SERVER['argv'] = array('-p', 'C:\\wamp\\bin\\php\\php5.3.10\\php-cgi.exe', '-c', dirname(__FILE__).'/php.ini', '-j', 20, dirname(__FILE__), '-log', dirname(__FILE__)."/test.log");
include "Test/RunTests.php";
?>
S XDebugem už zkušenosti mám, ladění přes místní webový server mi chodí. Tohle je poprvé, co zkouším CLI aplikaci.
Máte někdo nějaký tip?
- petr.pavel
- Člen | 535
Fakt nikoho nic nenapadá?
XDebug mi funguje na základní testovací rámec, můžu si dokrokovat až do TestCase::execute(), kde se jednotlivé testy volají přes proc_open(), ale breakpointy v jednotlivých .phpt vykonávání nezastaví.
php.ini s povoleným XDebugem se předává, to vidím v $this->cmdLine. Jde o to samé php.ini, které mi umožnilo dokrokovat až sem.
Tak co, ani teď nic?
- Filip Procházka
- Moderator | 4668
Protože se testy spouští v samostatných procesech, musel bys mít tolik instancí debuggeru, kolik máš testů. A je hovadina, že? ;)
Soubory nette testů se dají spouštět samostatně. Tedy je spouštěj samostatně a debuguj po jednom ;)
- petr.pavel
- Člen | 535
No, nedělal jsem si ambice paralelně debugovat víc testů najednou :-)
Takže v praxi by se sice instancializovalo víc debuggerů, ale krokoval bych
jen v jednom z nich. Ostatní by bez zastavení doběhly.
Je na to samostatné spouštění nějaká podpora v Nette Test Frameworku?
Nebo si musím něco napsat sám?
To bych měl pak rychlejší si vytvořit jednoúčelovou akci nějakého
existujícího presenteru a spustit to přes prohlížeč. Tak jsem to řešil
do teď.
Překvapuje mě, že to zatím nikoho nepálilo.
- Filip Procházka
- Moderator | 4668
Takže v praxi by se sice instancializovalo víc debuggerů, ale krokoval bych jen v jednom z nich. Ostatní by bez zastavení doběhly.
V praxi by se nic. Nejde to.
- RDPanek
- Člen | 189
@hosiplan +1
Pokud nemáš nic na spouštění testů v Nette napsaného, můžeš použít NetteTestCase https://github.com/…etteTestCase , který ti zpřístupní context v testech a můžeš hned po naklonování začít psát testy.
- petr.pavel
- Člen | 535
@RDPanek: Díky za tip, už jsem na tvůj projekt koukal. Je postavený na PHPUnit a já se rozhodl jít cestou Nette Test Framework, takže možná jindy. PHPUnit jsem už zkoušel dřív na projektu bez Nette a teď jsem si chtěl vyzkoušet něco jiného.
Nemám problém si přidat do Nette Test Frameworku svoje spouštění, které debugovat jde. Jen jsem chtěl předtím zjistit, jestli to tam vlastně už nějak není, jen já si toho třeba nevšiml.