TP8 - Q4.4

Programmation Avancée

Moderator: douinj

Post Reply
berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

TP8 - Q4.4

Post by berry_ju » 14 Dec 2021 13:00

Bonjour

Quelque chose m'échappe, mais ça doit venir de moi :
Comment à la fois satisfaire le besoin des tests de la Q4.3 d'avoir le "Debug" dans le retour du toString() et le besoin de la Q4.4 de ne pas les avoir ?
Merci !

Julien

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP8 - Q4.4

Post by douinj » 14 Dec 2021 18:39

bonsoir,
Comment à la fois satisfaire le besoin des tests de la Q4.3 d'avoir le "Debug" dans le retour du toString() et le besoin de la Q4.4 de ne pas les avoir ?
Je ne comprends pas votre question, si c'est une coquille des tests unitaires, supprimez la, si c'est en utilisant femtoContainer vérifiez la configuration

à suivre

berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

Re: TP8 - Q4.4

Post by berry_ju » 15 Dec 2021 10:42

Ah mince, je n'ai pas été assez clair alors.
Les tests unitaires de la Q4.3 testent la présence de la chaine "Debug" dans le toString de la chaine de responsabilités.
L'énoncé de la Q4.4 dit :
"Utilisez le formidable outil d'injection de dépendances de l'unité NFP121 : femtoContainer, en ajoutant un maillon Debug n'importe où dans la chaîne de responsabilités... la classe de tests unitaires doit s'exécuter sans erreur."
Or, sans modifier les tests unitaires de la Q4.4, ça ne peut pas marcher, puisqu'on affiche la chaîne "Debug" dans le toString et que ce "Debug" est absent des tests unitaires de la Q4.4.
Dit autrement, a-t-on le droit de modifier les tests unitaires de la Q4.4 pour que ça passe ? Moi j'avais compris que non, que les tests devaient passer tels quels.
J'espère avoir assez bien décrit mon interrogation mais n'hésitez pas à me faire préciser dans le cas contraire.
Bonne journée,

Julien

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP8 - Q4.4

Post by douinj » 15 Dec 2021 10:53

Bonjour,

Avec l'usage de femtoContainer, tout est permis,

testAvecInjectionAvecLePatronCommande normalement vous évite de toucher aux tests et vous pouvez en q4-4 modifier les tests,

Avez-vous bien pris la dernière version ?

Bonne fin de tp8

Code: Select all

   public void setUp(){ 
        Table.getInstance().vider();
    }

    public void testAvecInjection() throws Exception{
        try{
            assertEquals(0, Table.getInstance().taille());
            ApplicationContext ctx = Factory.createApplicationContext("./question4/README.TXT");
            System.out.println("tests avec injection: ");

            Requete requeteCreate = ctx.getBean("requete_create");
            Handler<Requete> chaineCRUD = ctx.getBean("log_bean");

            assertEquals("Log->Create->Retrieve->Update->Delete", chaineCRUD.toString());
            chaineCRUD.handleRequest(requeteCreate);
            assertTrue(Table.getInstance().contient("temperature"));
            assertEquals(200,Table.getInstance().lire("temperature"));

            Requete requeteUpdate = ctx.getBean("requete_update");
            chaineCRUD.handleRequest(requeteUpdate);
            assertEquals(40,Table.getInstance().lire("temperature"));

            Handler<Requete> chaineUD = ctx.getBean("update_bean");
            assertEquals("Update->Delete", chaineUD.toString());

            // à développer, par exemple en ajoutant le patron commande
        }catch(Exception e){
            e.printStackTrace();
        }

    }

    public void testAvecInjectionAvecLePatronCommande() throws Exception{
        try{
            assertEquals(0, Table.getInstance().taille());
            ApplicationContext ctx = Factory.createApplicationContext("./question4/README.TXT");
            System.out.println("tests avec injection: ");
            Invoker<Requete> invoker = ctx.getBean("invoker_bean");

            invoker.execute(ctx.getBean("requete_create"));
            assertTrue(Table.getInstance().contient("temperature"));
            assertEquals(200,Table.getInstance().lire("temperature"));

            invoker.execute(ctx.getBean("requete_update"));
            assertEquals(40,Table.getInstance().lire("temperature"));

       [b]     // changez la chaine de responsabilités depuis le fichier de configuration
            // vérifiez le bon usage du Patron Commande[/b]

        }catch(Exception e){
            e.printStackTrace();
        }
    }

berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

Re: TP8 - Q4.4

Post by berry_ju » 15 Dec 2021 12:28

Oui, j'ai récupéré les dernières sources.
Pour être sûr à mon tour d'avoir compris ce que vous m'avez répondu, on est d'accord que "assertEquals("Log->Create->Retrieve->Update->Delete", chaineCRUD.toString());" dans "testAvecInjection()" ne peut pas fonctionner avec un Debug quelque par dans chaîne de responsabilité ?
Il faut bien modifier le test si on veut qu'il passe ?
Et effectivement, la q4.5 ne devrait pas poser ces soucis, si j'ai bien compris.

berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

Re: TP8 - Q4.4

Post by berry_ju » 15 Dec 2021 13:47

Bon, j'ai fait comme ça et j'ai validé JNEWS, pour celles et ceux qui se demanderaient.

Post Reply