TP_Commit : q4 testDebitAvecRollback

Programmation Avancée

Modérateur : Douin

tasic
Messages : 28
Inscription : 09 oct. 2016 14:13

TP_Commit : q4 testDebitAvecRollback

Message par tasic » 04 déc. 2016 14:13

There was 1 failure:
1) testDebitAvecRollback(question4): Débit de 10, (sans rollback) sortie XML non conforme ???

Je ne comprends pas le test
Je viens de vérifier dans tous les sens et l'affichage xml et bon quoique je fasse

Original
<?xml version="1.0" encoding="UTF-8"?>
<groupe nom="g" solde="570">
<contributeur nom="g_a" solde="100" />
<contributeur nom="g_b" solde="50" />
<contributeur nom="g_c" solde="150" />
<groupe nom="g1" solde="270">
<contributeur nom="g1_a1" solde="70" />
<contributeur nom="g1_b1" solde="200" />
</groupe>
</groupe>

débiter : 40

<?xml version="1.0" encoding="UTF-8"?>
<groupe nom="g" solde="370">
<contributeur nom="g_a" solde="60" />
<contributeur nom="g_b" solde="10" />
<contributeur nom="g_c" solde="110" />
<groupe nom="g1" solde="190">
<contributeur nom="g1_a1" solde="30" />
<contributeur nom="g1_b1" solde="160" />
</groupe>
</groupe>

débiter : 40
Il ne se passe rien g_b et g1_a1 n'ont pas assez de fond

créditer: 10

<?xml version="1.0" encoding="UTF-8"?>
<groupe nom="g" solde="420">
<contributeur nom="g_a" solde="70" />
<contributeur nom="g_b" solde="20" />
<contributeur nom="g_c" solde="120" />
<groupe nom="g1" solde="210">
<contributeur nom="g1_a1" solde="40" />
<contributeur nom="g1_b1" solde="170" />
</groupe>
</groupe>

Si j'ai ce résultat c'est que tout va bien le rollback devrait fonctionner
ou alors j'ai oublié un cas ?

si prêt du but...
merci

pellier
Messages : 37
Inscription : 30 oct. 2016 21:13

Re: TP_Commit : q4 testDebitAvecRollback

Message par pellier » 04 déc. 2016 16:29

Salut,

As-tu essayé sans le TransactionDebit ?

Je ne comprends pas du tout la logique de la chose mais de mon côté si j'utilise le template method de la question 3 (le rollback, memento…) je ne passe pas les tests jnews.
Alors que si je ne l'utilise pas, je passe tous les tests.

Ça me semble complètement absurde mais bon je viens de re-tester pour être bien sûr et les tests JNews réagissent comme ça de mon côté

Douin
Messages : 219
Inscription : 18 mars 2009 15:46

Re: TP_Commit : q4 testDebitAvecRollback

Message par Douin » 04 déc. 2016 18:18

Bonjour,
Vous me faites douter, je regarde et vous informe via ce post

à suivre...

Après avoir regardé...

Cela me semble correct du côté jnews, dans le doute envoyez votre projet bluej, je pourrai ainsi affiner les tests jnews

Bonne fin de question

c'est bien la méthode AbstractTransaction t = new TransactionDebit(g);

le test est assez sommaire deux débits successifs de 10 avec un arbre de "test" affecté par introspection
au second, le rollback doit être mis en oeuvre

Code : Tout sélectionner

public void testDebitAvecRollback() throws Exception{ 
    try{
  		// juste le bon IHM
	    
	    // Accès au groupe de contributeurs par introspection ...
	    Field field_g = null;
	    try{
	      field_g = f.getClass().getDeclaredField("g"); //NoSuchFieldException
        field_g.setAccessible(true);
      }catch(Exception e){
        fail("Avez-vous renommé l'attribut g (\"GroupeDeContributeurs g;\" en ligne 24 ?");
        return;
      }
      assertNotNull("Avez-vous renommé l'attribut g (\"GroupeDeContributeurs g;\" en ligne 24 ?",field_g);
      
	    GroupeDeContributeurs g;
	    
	    g = new GroupeDeContributeurs("g");
      g.ajouter(new Contributeur("g_a",10));
      g.ajouter(new Contributeur("g_b",50));
      g.ajouter(new Contributeur("g_c",150));
      GroupeDeContributeurs g1 = new GroupeDeContributeurs("g1");
      g1.ajouter(new Contributeur("g1_a1",70));
      g1.ajouter(new Contributeur("g1_b1",200));
      g.ajouter(g1);
      GroupeDeContributeurs g2 = new GroupeDeContributeurs("g2");
      g2.ajouter(new Contributeur("g2_a1",700));
      g2.ajouter(new Contributeur("g2_b1",15));
      g.ajouter(g2);
      
      field_g.set(f,g);

      try{
        resultatJTextArea.setText(question2.arbreXML(g)); //actualiser();
      }catch(Exception e){}
      f.pack();
      
      ((JTextField)subComponents[0]).setText("10");
	    JButton btnDebit = (JButton)subComponents[1];
	    btnDebit.doClick();

	    
 	    String referent =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<groupe nom=\"g\" solde=\"1125\">" +
"  <contributeur nom=\"g_a\" solde=\"0\" />" +
"  <contributeur nom=\"g_b\" solde=\"40\" />" +
"  <contributeur nom=\"g_c\" solde=\"140\" />" +
"  <groupe nom=\"g1\" solde=\"250\">" +
"    <contributeur nom=\"g1_a1\" solde=\"60\" />" +
"    <contributeur nom=\"g1_b1\" solde=\"190\" />" +
"  </groupe>" +
"  <groupe nom=\"g2\" solde=\"695\">" +
"    <contributeur nom=\"g2_a1\" solde=\"690\" />" +
"    <contributeur nom=\"g2_b1\" solde=\"5\" />" +
"  </groupe>" +
"</groupe>";

	  String resultat = ((JTextArea)components[0]).getText();
    assertTrue(" Débit de 10, (sans rollback) sortie XML non conforme ??? ", resultat.contains("<contributeur nom=\"g2_b1\" solde=\"5\" />"));

    ((JTextField)subComponents[0]).setText("10");
	  btnDebit = (JButton)subComponents[1];
	  btnDebit.doClick();

	  resultat = ((JTextArea)components[0]).getText();
    assertTrue(" Débit de 10, (avec rollback)sortie XML non conforme ??? ", resultat.contains("<contributeur nom=\"g2_b1\" solde=\"5\" />"));

  }catch(Exception e){
      fail("exception inattendue ! " + e.getClass().getName());
    }

pellier
Messages : 37
Inscription : 30 oct. 2016 21:13

Re: TP_Commit : q4 testDebitAvecRollback

Message par pellier » 05 déc. 2016 13:04

@Douin

Ah du coup c'est vous qui me faites douter.
Je re-vérifie ce matin et j'ai toujours la même chose
(ça fait 3 fois et j'ai toujours la même chose réponse avec les tests JNews)

JNews d'accord

Code : Tout sélectionner

g.debit(Integer.parseInt(somme.getText()));
JNews pas d'accord

Code : Tout sélectionner

AbstractTransaction transaction = new TransactionDebit(g);
…
transaction.debit(Integer.parseInt(somme.getText()));
J'arrête là parce qu'avec cette histoire j'ai fini mes possibilités de submit.
Mon TP est déposé avec 0 erreurs JNews…

De plus votre deuxième test ne teste pas la présence rollBack il me semble ?

Code : Tout sélectionner

assertTrue(" Débit de 10, (avec rollback)sortie XML non conforme ??? ", resultat.contains("<contributeur nom=\"g2_b1\" solde=\"5\" />"));
avec ou sans RollBack si on essaie de débiter 10 au composite g une erreur est levée dès la première feuille (nom="g_a" solde="0") donc ça ne teste pas l'existence du rollback car avec ou sans lui g2_b1 n'est jamais débité. Ce sont les feuilles parcourues avant l'exception qu'il faudrait tester.

Douin
Messages : 219
Inscription : 18 mars 2009 15:46

Re: TP_Commit : q4 testDebitAvecRollback

Message par Douin » 05 déc. 2016 16:56

Bonjour,
De plus votre deuxième test ne teste pas la présence rollBack il me semble ?
Vous avez un premier débit de 10 tout se passe bien, pas d'exception,
le contributeur g2_b1 a un solde de 5 "<contributeur nom=\"g2_b1\" solde=\"5\" />"));

Un deuxième débit de 10 engendre un rollback, plusieurs contributeurs ne peuvent contribuer, excption donc rollback
alors le resultat xml doit être le même g2_b1 a toujours un solde de 5

Dites moi si cela ne vous semble pas pertinent, je le changerai pour l'an prochain

Bonne fin de tp

tasic
Messages : 28
Inscription : 09 oct. 2016 14:13

Re: TP_Commit : q4 testDebitAvecRollback

Message par tasic » 05 déc. 2016 17:58

@Douin
Du coup je fais comment pour JNews ?
Je pose mon projet comme actuellement, sans passer la validation de la question 4 ?
Ou je bidouille comme @pellier ?

pellier
Messages : 37
Inscription : 30 oct. 2016 21:13

Re: TP_Commit : q4 testDebitAvecRollback

Message par pellier » 05 déc. 2016 18:13

Ce que je veux dire c'est qu'il me semble que :
- oui : le test "solde de g2_b1 == 5" renvoie vrai
- par contre il devrait renvoyer vrai que le rollBack soit mis en place ou pas !

car le rollBack permet, si une exception survient, de restituer les valeurs des feuilles modifiées avant celle qui lance l'exception.
Celles situées après ne sont de toutes manières modifiées à aucun moment.
Donc ce test renvoie vrai mais n'est pas pertinent pour déterminer la présence du rollback (encore une fois d'après ce que je comprends)

Douin
Messages : 219
Inscription : 18 mars 2009 15:46

Re: TP_Commit : q4 testDebitAvecRollback

Message par Douin » 06 déc. 2016 9:37

Bonjour

@tasic

Laissez en l'état, je vais modifier les tests unitaires en conséquence, ils seront moins permissifs, nous sommes le jour de la remise du tp, trop tard pour les mettre en ligne.

Passez au tp suivant

Bonne journée

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité