2010-05-16 5 views
3

Je suis habitué au développement web en utilisant LAMP, PHP5, MySQL plus NetBeans avec Xdebug.CodeIgniter et SimpleTest - Comment faire mon premier test?

Maintenant, je veux améliorer mon développement, en apprenant à utiliser (A) un bon test et (B) un cadre. J'ai donc mis en place CodeIgniter, SimpleTest et le complément easy Xdebug pour Firefox. C'est très amusant parce que maroonbytes m'a fourni des instructions claires et une configuration configurée prête pour le téléchargement. Je suis debout sur les épaules des géants, et très reconnaissant. J'ai déjà utilisé SimpleTest un peu dans le passé. Voici le genre de chose que j'ai écrit:

<?php 
require_once('../simpletest/unit_tester.php'); 
require_once('../simpletest/reporter.php'); 

class TestOfMysqlTransaction extends UnitTestCase { 
    function testDB_ViewTable() { 
    $this->assertEqual(1,1); // a pseudo-test 
    } 
} 
$test = new TestOfMysqlTransaction(); 
$test->run(new HtmlReporter()) 
?> 

Donc j'espère que je sais à quoi ressemble un test. Ce que je ne peux pas comprendre, c'est où et comment mettre un test dans ma nouvelle configuration. Je ne vois aucun exemple de test dans le paquetage maroonbytes, et Google m'a jusqu'ici conduit à des articles qui supposent que les tests unitaires sont déjà fonctionnellement disponibles. Que fais-je?

+0

Salut! Avez-vous réussi à le faire fonctionner? – Industrial

+0

Non Essayé dur, mais après un certain temps j'ai été submergé w/circonstances extérieures. Dernière tentative a été abandonner le régime maroonbytes et intégrer SimpleTest d'une autre manière. Mais "No test runnable" réponses. Je devrais être en mesure de reprendre mes efforts très bientôt, alors j'espère apporter de bonnes nouvelles. – Smandoli

+0

Aucune tentative depuis. Problèmes avec Lucid Lynx + Netbeans. Fille au collège. Etc. J'espère toujours donner un coup de pied cependant. – Smandoli

Répondre

1

D'abord, les tests doivent être nommés correctement. Pour tester un contrôleur de bienvenue placé dans le fichier welcome.php, un test est nommé welcome_controller_test.php et stocké sous tests/controllers /. Pour plus d'informations, voir this post. Deuxièmement, l'argument GET de Xdebug interfère avec la routine de test. Voir poste juste au-dessus, aussi this post.

Troisièmement, le test stub j'ai posté besoin deux quatre lignes supprimées:

//require_once('../simpletest/unit_tester.php'); 
//require_once('../simpletest/reporter.php'); 
... 
//$test = new TestOfMysqlTransaction(); 
//$test->run(new HtmlReporter()) 

que je fais des tests assez heureux maintenant. CodeIgniter me permet de créer/maintenir des tests facilement, donc mon objectif de TDD semble atteignable. Mes premières tentatives de TDD m'ont donné l'idée, mais gratter PHP était trop stérile pour que je sois efficace (et nous ne parlerons pas de VBA!).

2

Edit:

Si vous suivez la configuration de maroonbytes, il suffit de suivre les instructions:

  1. Télécharger le framework SimpleTest et extraire les fichiers dans votre répertoire @codeigniter.
  2. Dans votre dossier principal et dans le dossier admin/application, créez un nouveau dossier appelé tests.
  3. Dans le nouveau dossier de tests, configurez des dossiers supplémentaires appelés «modèles», «vues», «contrôleurs», «bibliothèques» et «helpers».

Tout fichier se terminant par .php et avec un UnitTestCase dans l'un de ces dossiers, doit être exécuté. :)

+0

Merci Favio. Je donne un peu plus de temps.Je suis sur WAMP et l'interface graphique de test de maroonbytes est glitched up; Ce soir, je serai de retour sur LAMP et j'essaierai votre réponse. Mais aussi, la structure de votre dossier est différente ... donc, paresseux, j'espère qu'un fan de maroonbytes postera quelque chose. – Smandoli

+0

Np. :) J'ai changé ma réponse, je n'étais pas sûr d'être sur la bonne voie avec mon précédent. HTH! – Favio

+0

J'ai un fichier .php avec du contenu tel que décrit dans l'OP, et j'ai essayé de le ranger dans les différents sous-dossiers de test. Mais je ne peux pas exécuter les tests avec succès via l'interface 'CodeIgniter Application Test Suite'. Je reçois le message: include_once (/var/www/sparts/main/tests/test_suite_3.php) [function.include-once]: impossible d'ouvrir le flux '. C'est tout faux, ça devrait aller à localhost et ce chemin n'est pas bon. J'aimerais savoir ce qui se passe. – Smandoli