TP Commit Q3 TestsTransaction

Programmation Avancée

Modérateur : Douin

BOISDET
Messages : 10
Inscription : 23 oct. 2016 13:02

TP Commit Q3 TestsTransaction

Message par BOISDET » 03 déc. 2016 19:17

Bonjour à tous,

J'ai un souci avec les tests de TestsTransaction.
Le premier test par exemple, testDebitEnErreur n'instancie que des objets du paquetage question1.
Je ne vois donc pas comment l'assertion ci-dessous peux être bonne:

assertEquals(" ce solde n'est pas transactionnel, c'est bien une erreur !!! ", ancienSolde, g.solde());

L'exception "SoldeDebiteurException" a bien été gérée en question 1 mais pas le rollbackTransaction qui n'arrive qu'en question 3.

Doit-on modifier les classes du paquetage question1 ?

Julien Boisdet.

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

Re: TP Commit Q3 TestsTransaction

Message par Douin » 03 déc. 2016 19:36

Bonjour,

Comme le solde n'est pas transactionnel, ce test échoue, c'est normal...

Bonne fin de tp

BOISDET
Messages : 10
Inscription : 23 oct. 2016 13:02

Re: TP Commit Q3 TestsTransaction

Message par BOISDET » 03 déc. 2016 20:14

Je dois donc revoir mes classes de la question 1 :
Merci pour cette réponse.

Voici ma méthode solde de ma classe GroupeDeContributeurs :

public int solde(){
int solde = 0;
for(int i = 0 ; i < this.liste.size() ; i++){//ajouté Q1
solde += this.liste.get(i).solde();
}
return solde;
}

Ce code a passé tous les tests.
Le test de la question 3 ne peut donc pas fonctionner avec ma méthode qui recalcule le solde du groupe.
Je vais donc le revoir.

julien.

BOISDET
Messages : 10
Inscription : 23 oct. 2016 13:02

Re: TP Commit Q3 TestsTransaction

Message par BOISDET » 03 déc. 2016 23:00

C'est la seul erreur que j'ai désormais.
Je ne comprend pas , je dois passer à côté de quelque chose.
Pour moi la classe "GroupeDeContributeurs" ne possède pas d'attribut "solde".
L'appel de la méthode "solde()" de cette classe ne peut renvoyer que le résultat de la somme des soldes des contributeurs appartenant au groupe et ses sous-groupes.

Julien.

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

Re: TP Commit Q3 TestsTransaction

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

Bonjour,

Et en plus simple quelque chose comme

for(Composant c : liste)
res = res + c.solde();

pourrait il convenir ?

À suivre...

Ruddy Reisberg
Messages : 21
Inscription : 01 nov. 2016 16:13

Re: TP Commit Q3 TestsTransaction

Message par Ruddy Reisberg » 12 janv. 2017 17:30

Bonjour,

Par rapport au problème des transactions, vous avez écrit autre part qu'il ya avait plusieurs techniques, sans utiliser forcément Visiteur ou les Dictionnaires.

Je pensais à rajouter une méthode setSolde() dans Cotisant, Contributeur et GroupeDeContributeurs.

Ainsi dans le mémento, j'aurais juste à faire par exemple ceci:
public class Memento {
private int mementoTransaction;

public Memento(Cotisant c) {
mementoTransaction = c.solde();
}
Puis pour la restitution, utiliser la fonction setState précédement installée avec comme paramètre le mémento qu'on a sauvegardé ci-dessus.

Je pars du principe que le mémento est un int et qu'il correspond au solde du cotisant.

Que pensez-vous de cette stratégie?

Par avance merci!

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

Re: TP Commit Q3 TestsTransaction

Message par Douin » 12 janv. 2017 20:24

Bonsoir,

Cela doit fonctionner, c'était une des toutes premières solutions à ce tp,

vérifiez tout de même en cas de transactions imbriquées si la seule sauvegarde du solde, convient,
il me semble que l'un des tests des tests unitaires présents dans votre tp met en évidence ce cas

à vérifier donc

Répondre

Qui est en ligne ?

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