TP03 : le fichier TP03.html

Modérateurs : graffion, jmdouin, agoncal, mlebihan

fazil
Messages : 31
Inscription : 09 oct. 2016 21:28

TP03 : le fichier TP03.html

Message par fazil » 30 oct. 2016 4:42

Bon[jour,soir]

Quand je lance les tests depuis IntelliJ, les 26 passent avec succès.
Mais quand je génère le TP03.html, je me retrouve avec 6 erreurs de NullPointerException!
J'avoue avoir du mal à comprendre la pile d'appel car elle ne référence aucun des fichiers source du TP.

voilà le premier problème:

testUpdateItem(F): Votre exécutable a échoué en levant une exception.

Exception levée: java.lang.NullPointerException

Pile d'appel:
java.lang.NullPointerException
at F.a(Unknown Source)
at F.testUpdateItem(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at K.tester(Unknown Source)
at K.testerEtQuitter(Unknown Source)
at Tests.main(Unknown Source)

testUpdateItem(F): null


Question1: Quelle est la différence entre les tests lancés dans l'IDE
et les tests lancés via Ant? (ce n'est pas la première fois que ça m'arrive)

Question2: comment résoudre mon problème?

Merci

petite précision: mon serveur MySQL n'est pas en local

n_ouarti
Messages : 7
Inscription : 22 sept. 2015 17:53

Re: TP03 : le fichier TP03.html

Message par n_ouarti » 30 oct. 2016 8:45

Salut,

je ne peux pas t'aider pour le problème des tests qui ne passent pas, mais ce que je peux dire :
- les tests fournis et les tests ant sont différents : la seule chose de sûre c'est que si les tests fournis ne passent pas, les tests ant ne passeront pas, mais ce n'est pas parce que les tests fournis passent que ceux de ant passeront forcément.
- les tests ant, c'est un peu une boîte noire, et de mon expérience avec d'autres UEs "à tests", je conseille de :
- ne jamais modifier le code fourni (cela à encore été précisé par M. Graffion en cours d'ailleurs)
- de coller au maximum à la configuration demandée, ici il s'agit de DataAccessConstants :

Code : Tout sélectionner

public interface DataAccessConstants {

    /**
     * Database error code when we want to insert an id that already exists.
     */
    int DATA_ALREADY_EXIST = 1062;

    /**
     * JDBC Driver class to instanciate.
     */
    String JDBC_DRIVER = "com.mysql.jdbc.Driver";

    /**
     * URL of where the database is located.
     */
    String URL_DB = "jdbc:mysql://localhost:3306/petstoreDB";

    /**
     * Username to access the database.
     */
    String USER_DB = "root";

    /**
     * Password to access the database.
     */
    String PASSWD_DB = "";
}
En cours, il a été dit que si le mot de passe était différent de "", certains tests ne passeraient pas ; j'imagine qu'avec ta configuration tu es dans ce cas là...

fazil
Messages : 31
Inscription : 09 oct. 2016 21:28

Re: TP03 : le fichier TP03.html

Message par fazil » 30 oct. 2016 19:29

Merci pour les précisions n_ouarti!
Je ne me souvenais plus du moment du cours où il a parlé du mot de passe "".
Cependant, je trouve ça dommage que le TP nous force à réinstaller un serveur MySQL
en local.J'en ai déjà un sur une autre machine et j'ai pas envie de perdre du temps à
réinventer la roue. Donc je demande à M. Graffion (c'est bientôt Noël, donc je me permets
de faire des demandes :-) ): Serait-il possible de faire passer les tests Ant avec n'importe quel serveur MySQL?

graffion
Messages : 605
Inscription : 21 juin 2005 14:05

Re: TP03 : le fichier TP03.html

Message par graffion » 30 oct. 2016 23:10

Bonjour,

Si vous modifiez les paramètres de la BD, ant yaps-mark aura 6 tests qui échoueront avec des java.lang.NullPointerException:
testUpdateItem(F): Le résultat que vous avez produit n'est pas celui attendu.
testUpdateItem(F): Object has been created it should be found in the database
...

Ce sont les 6 tests qui n'utilisent pas exclusivement les DAO, mais appellent find*Sql().

Ces méthodes find*Sql() font appel à getConnection() défini dans AbstractTestCase :
connection = DriverManager.getConnection(DataAccessConstants.URL_DB, DataAccessConstants.USER_DB, DataAccessConstants.PASSWD_DB);

Elles utilisent bien les constantes de l'interface DataAccessConstants, mais les valeurs prises ne sont sans doute pas celles que vous aurez customisées dans votre DataAccessConstants mais plutôt les valeurs initiales qui ont été incluses dans le fichier jar test03.jar (fichier crypté qui contient les mêmes tests unitaires) utilisé par yaps-mark .
(C'est sans doute une optimisation du compilateur qui constate que DataAccessConstants.PASSWD_DB est une constante.)

Lors de le remise de votre travail remplissez le champ "commentaire" en précisant que certains devos tests échouent car vous avez du modifier le mot de passe (vous pouvez aussi avouer que vous êtes un utilisateur de Mac malheureux!). Vous ne serez alors pas pénalisé!

fazil
Messages : 31
Inscription : 09 oct. 2016 21:28

Re: TP03 : le fichier TP03.html

Message par fazil » 31 oct. 2016 0:04

vous pouvez aussi avouer que vous êtes un utilisateur de Mac malheureux!).
Plutôt mourir! utilisateur d'Ubuntu depuis 1789 )))
Vous ne serez alors pas pénalisé!
Bon ben j'envoie la tarball alors...
Merci

Image

Répondre

Qui est en ligne ?

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