Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-10-2010 12:57:35

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Tests unitaires

Bonjour à tous

J'essaie depuis 2 jours de mettre en place les tests unitaires sur un projet très simple (pour commencer), en m'appuyant sur Zend_Test
j'ai trouvé pas mal de tuto, mais aucun ne m'a permis d'aboutir.

Quelqu'un aurait-il réellement mis en place ces tests unitaires (sur Zend_test et pas uniquement PHPUnit) et aurait le courage de poster quelque part ses sources (phpunit.xml, les bootstrap et les script d'exécutions phpunit).

Merci d'avance.

Hors ligne

 

#2 12-10-2010 13:01:33

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Tests unitaires

Hello,

J'ai donné un webinar sur le sujet, il y a quelques exemples : http://www.slideshare.net/mikaelkael/te … rk-5155326

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 12-10-2010 14:24:09

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Re: Tests unitaires

Merci de ta réponse rapide

J'ai vu ton webinar, que j'ai trouvé très simple.
Mais je n'ai pas réussi à exécuter les tests.
J'utilise le script phpunit à la racine du répertoire "tests".
Seules les classes etendant PHPUnit_Framework_TestCase sont instanciée par phpunit.
Ce qui n'ai pas le cas des classes que tu décris dans ton webinar.
Sur les classes de test qui étendent PHPUnit_Framework_TestCase, phpunit s'exécute correctement.

J'ai oublié quelque chose mais quoi ?



mikaelkael a écrit:

Hello,

J'ai donné un webinar sur le sujet, il y a quelques exemples : http://www.slideshare.net/mikaelkael/te … rk-5155326

@+

Dernière modification par jcb (12-10-2010 14:24:46)

Hors ligne

 

#4 12-10-2010 22:12:46

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Tests unitaires

Apparemment, il ne semble pas aussi simple que ça :p

En slide 35, ExempleControllerTest étend Zend_Test_PHPUnit_ControllerTestCase qui étend elle même PHPUnit_Framework_TestCase et est donc reconnu par PHPUnit

Le webinar est aussi disponible sous forme audio : http://www.zend.com/fr/resources/webinars/


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 13-10-2010 10:34:59

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Re: Tests unitaires

J'ai recopié le fichier phpunit.xml et le Bootstrap.php de ton tuto.
J'ai réduis ExempleControllerTest.php à :

Code:

class ExempleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase {

    public function setUp()
    {
    }

    public function testPageStatiqueAUneBonneStructure()
    {
    }

}

Je tappe "phpunit" depuis le réperoire "tests",et j'obtiens ça :

Code:

atal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "Suite de tests.php" nor "Suite de tests.php" could be opened.' in C:\wamp\bin\php\php5.3.0\PEAR\PHPUnit\Util\Skeleton\Test.php:102
Stack trace:
#0 C:\wamp\bin\php\php5.3.0\PEAR\PHPUnit\TextUI\Command.php(157): PHPUnit_Util_Skeleton_Test->__construct('Suite de tests', '')
#1 C:\wamp\bin\php\php5.3.0\PEAR\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#2 C:\wamp\bin\php\php5.3.0\phpunit(52): PHPUnit_TextUI_Command::main()
#3 {main}
  thrown in C:\wamp\bin\php\php5.3.0\PEAR\PHPUnit\Util\Skeleton\Test.php on line 102

Si je modifie mon controller comme suit :

Code:

class ExempleControllerTest extends PHPUnit_Framework_TestCase {

    public function setUp()
    {
    }

    public function testPageStatiqueAUneBonneStructure()
    {
    }

}

J'obtiens :

Code:

PHPUnit 3.5.0 by Sebastian Bergmann.

Suite de tests
 ExempleControllerTest
 .

Time: 1 second, Memory: 3.25Mb

OK (1 test, 0 assertions)

Et si je mets les deux controllers, ça marche. Ce qui me fait penser que phpunit ne voit pas la première classe de tests, celle qui étend Zend_Test_PHPUnit_ControllerTestCase.

N'y a-t-il pas un moyen de forcer phpunit à traiter les "petits enfants" de PHPUnit_Framwork_TestCase ?

J'utilise Zend Framework 1.10 et phpunit 3.5.0


mikaelkael a écrit:

Apparemment, il ne semble pas aussi simple que ça :p

En slide 35, ExempleControllerTest étend Zend_Test_PHPUnit_ControllerTestCase qui étend elle même PHPUnit_Framework_TestCase et est donc reconnu par PHPUnit

Le webinar est aussi disponible sous forme audio : http://www.zend.com/fr/resources/webinars/

Hors ligne

 

#6 13-10-2010 10:37:16

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Tests unitaires

Si tu comprends la langue de Shakespeare, ZendCast a sorti, il y a 2 jours, un nouveau screencast Unit Testing Models qui est très bien fait aussi.
J'aime beaucoup leur style d'écrire et de tester leur code en direct, je trouve cela très didactique.

Hors ligne

 

#7 13-10-2010 10:53:40

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Re: Tests unitaires

Shakespeare c'est un peu présomptueux, mais Bill Gates, ça devrais passer.

Merci pour le lien, je regarde ça.

Ithier a écrit:

Si tu comprends la langue de Shakespeare, ZendCast a sorti, il y a 2 jours, un nouveau screencast Unit Testing Models qui est très bien fait aussi.
J'aime beaucoup leur style d'écrire et de tester leur code en direct, je trouve cela très didactique.

Hors ligne

 

#8 13-10-2010 11:22:37

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Re: Tests unitaires

J'ai vu le tuto et en effet, c'est bien agréable d'avoir le code en direct.
Ceci dit, l'auteur n'utilise pas Zend_Test mais uniquement PHPUnit.
Je connais PHPUnit et j'arrive à peu près à l'utiliser avec Zend, mais pour tester le MVC il me semble de Zend_Test serait le bienvenue.


jcb a écrit:

Shakespeare c'est un peu présomptueux, mais Bill Gates, ça devrais passer.

Merci pour le lien, je regarde ça.

Ithier a écrit:

Si tu comprends la langue de Shakespeare, ZendCast a sorti, il y a 2 jours, un nouveau screencast Unit Testing Models qui est très bien fait aussi.
J'aime beaucoup leur style d'écrire et de tester leur code en direct, je trouve cela très didactique.

Hors ligne

 

#9 13-10-2010 11:47:26

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Tests unitaires

Hello,

Peux-tu montrer la structure de ton projet (application et tests) ?

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#10 13-10-2010 12:02:45

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Re: Tests unitaires

Code:

--monappli
----application
-   ----configs
-   ----controllers
-   ------indexController.php
-   ----layouts
-   -   ----scripts
-   ----views
-       ----scripts
-           ----error
-           ----index
----public
----tests
    ----application
    -   ----controllers
    -   ------indexControllerTest.php
    -   ------ExempleControllerTest.php
    ----library
    ----log
        ----coverage

mikaelkael a écrit:

Hello,

Peux-tu montrer la structure de ton projet (application et tests) ?

@+

Hors ligne

 

#11 13-10-2010 12:52:14

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Tests unitaires

Hello,

Peux-tu montrer aussi le dossier library (avec le ZF), les fichier Bootstrap.php et phpunit.xml ?

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#12 13-10-2010 13:28:43

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Re: Tests unitaires

Code:

----tests
    ----application
    -   ----controllers
    -   ------indexControllerTest.php
    -   ------ExempleControllerTest.php
    ----library
    -   ------bootstrap.php
    ----log
        ----coverage
    ----Bootstrap.php
    ----phpunit.xml

Le Bootstrap.php à la racine de test :

Code:

$rootPath = realpath(dirname(__DIR__));
if (!defined('APPLICATION_PATH')) {
    define('APPLICATION_PATH', $rootPath . '/application');
}
if (!defined('APPLICATION_ENV')) {
    define('APPLICATION_ENV', 'testing');
}
set_include_path(implode(PATH_SEPARATOR, array(
    '.',
    $rootPath . ';C:/ZendFramework-1.10.2/library/',
    get_include_path(),
)));
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Application_');

Comme tu peux le voir, le ZF est à l'extérieur du projet (j'ai plusieurs projets ZF)

Le phpunit.xml :

Code:

<phpunit bootstrap="./Bootstrap.php" colors="true">
    <testsuite name="Suite de tests">
        <directory>./</directory>
    </testsuite>
    <filter>
        <whitelist>
            <directory suffix=".php">../library/</directory>
            <directory suffix=".php">../application/</directory>
            <exclude>
                <directory suffix=".phtml">../application/</directory>
            </exclude>
        </whitelist>
    </filter>
    <logging>
        <log type="coverage-html" target="./log/coverage" charset="UTF-8"
             yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" />
        <log type="testdox" target="./log/testdox.html" />
    </logging>
</phpunit>

mikaelkael a écrit:

Hello,

Peux-tu montrer aussi le dossier library (avec le ZF), les fichier Bootstrap.php et phpunit.xml ?

@+

Hors ligne

 

#13 13-10-2010 14:11:00

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Tests unitaires

Hello,

Je dois passer à côté de qqch car j'ai strictement la même structure que toi et cela fonctionne.
Désolé.

@+

Edit : j'ai tout de même un

Code:

$loader->setFallbackAutoloader(true);

en plus dans le bootstrap.


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#14 13-10-2010 14:26:49

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Re: Tests unitaires

Je suis sous windows avec wamp.
xdebug n'ai pas installer, ça peut venir de là ?


mikaelkael a écrit:

Hello,

Je dois passer à côté de qqch car j'ai strictement la même structure que toi et cela fonctionne.
Désolé.

@+

Edit : j'ai tout de même un

Code:

$loader->setFallbackAutoloader(true);

en plus dans le bootstrap.

Hors ligne

 

#15 13-10-2010 17:13:37

jcb
Membre
Date d'inscription: 21-09-2010
Messages: 18

Re: Tests unitaires

Bon bah j'ai honte.
Au cours de mes pérégrinations j'ai dû modifier la classe ControllerTestCase qui n'étendait plus PHPUnit_Framework_TestCase mais PHPUnit_TestCase.
Donc phpunit n'en voulait pas.

Merci de votre aide.

jcb a écrit:

Je suis sous windows avec wamp.
xdebug n'ai pas installer, ça peut venir de là ?


mikaelkael a écrit:

Hello,

Je dois passer à côté de qqch car j'ai strictement la même structure que toi et cela fonctionne.
Désolé.

@+

Edit : j'ai tout de même un

Code:

$loader->setFallbackAutoloader(true);

en plus dans le bootstrap.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages