Debugování testů v Eclipse/XDebug

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
petr.pavel
Člen | 535
+
0
-

Č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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

@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
+
0
-

@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.