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()
    {
    }

}
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Si je modifie mon controller comme suit :

Code:

class ExempleControllerTest extends PHPUnit_Framework_TestCase {

    public function setUp()
    {
    }

    public function testPageStatiqueAUneBonneStructure()
    {
    }

}
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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)
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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_');
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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>
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

en plus dans le bootstrap.

Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

en plus dans le bootstrap.

Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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