IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Tests automatiques et passage d'objet en paramètre, recherche d'une solution élégante.


Sujet :

WinDev

  1. #1
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut Tests automatiques et passage d'objet en paramètre, recherche d'une solution élégante.
    Bonjour,

    Je suis confronté à un problème, non bloquant soit, mais gênant.

    En effet, je n'arrive pas à initialiser les objets passés en paramètre lors de mes tests de procédures ou fonctions.
    J'arrive à contourner cela, en utilisant les propriétés de ces objets, mais il doit toutefois y avoir une solution plus élégante.

    Afin d'illustrer mon problème, voici un extrait de création de classe ainsi que les scenarii de test d'une méthode.

    1-Extrait du code de la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    //Vecteur 2D
    cVecteur est une Classe
    	PRIVÉ
    		Y est un réel = 0 //Ordonnée
    		X est un réel = 0 //Abscisse
    FIN
     
    // Résumé : Ajoute un vecteur au vecteur en cours
    // Syntaxe :
    //[ <Résultat> = ] Ajouter (<clV2> est cVecteur)
    //
    // Paramètres :
    //	clV2 (cVecteur) : <indiquez ici le rôle de V2>
    // Valeur de retour :
    // 	cVecteur : <indiquez ici les valeurs possibles ainsi que leur interprétation>
    //
    // Exemple :
    // Indiquez ici un exemple d'utilisation.
    //
     
    FONCTION Ajouter(LOCAL clV2 est cVecteur)
     
    clRésultat est un cVecteur
     
    clRésultat.setX(:X+clV2.getX())
    clRésultat.setY(:Y+clV2.getY())
     
    RENVOYER clRésultat
    Le constructeur, les getters et les setters sont classiques

    2-Scénario défini "automatiquement" lors de la création du test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    c est un objet cVecteur
    Contrôleur1=c:Ajouter(clV2)
    3-Scénario "alternatif" afin de réaliser le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    c est un objet cVecteur //Vecteur en cours
    clV2 est un objet cVecteur //Vecteur à ajouter
    clRésultat est un objet cVecteur //Vecteur résultat
     
    //rX1, rY1, rX2 et rY2 sont déclarés en tant que paramètres d'entrée dans l'onglet de test
     
    c=allouer un cVecteur(rX1,rY1)
    clV2=allouer un cVecteur(rX2,rY2)
     
    clRésultat=c:Ajouter(clV2)
     
    //rResX et rResY sont déclarés en tant que paramètres de sortie dans l'onglet de test
    rResX=clRésultat.getX()
    rResY=clRésultat.getY()
    Je désirerais passer directement les valeurs de c, clV2 et Controleur1 sans avoir à utiliser la solution alternative.

    J'ai déjà tenté d'encadrer mes valeurs par "[]", "{}", "()" et "<>" en utilisant ";" comme séparateur sans résultat.

    Merci.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Attention aux variables de type réel, c'est plus problématique qu'autre chose, surtout si vous faites des opérations dessus, comme des additions, ce type ne devrait en aucun cas exister, prenez plutôt le type numérique. De mémoire, il me semble que dans le manuel de formation, il y a un exemple où on fait des additions sur des variables de type réel, le résultat donné est complètement faux. Vous avez de la doc ici qui en parle sinon.

    Concernant l'idée de rendre les choses plus jolies, pourquoi ne pas faire appel à des variables globales projet?
    Ainsi, vous pouvez retirer les paramètres en entrée du constructeur, dans le corps, vous faites appel à vos variables globales projet.

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Merci pour le conseil concernant les réels, je regarderais la doc.

    Mon problème vient surtout de l'allocation des objets dans mes tests.
    J'aimerais savoir s'il est possible passer mes valeurs de test et de résultat directement, sans avoir recours à ma bidouille, tel que je le ferais pour des variables "normales". Cela évite de faire un test sur le test.

    Un peut comme cela:
    Nom : Screen Shot 08-08-17 at 12.47 PM.PNG
Affichages : 244
Taille : 3,7 Ko

    ou alors via TestAjouteItération
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TestAjouteItération([1;2],[2;3],[3;5])
    NB: J'ai choisis un objet en paramètre, mais le problème est le même en ce qui concerne les structures.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je n'ai jamais fait appel à des tests unitaires, mais il semble qu'il serait possible de s'en sortir en encapsulant le code dans une procédure locale avec en paramètre la valeur du X et de Y, en lançant le test unitaire, on donne une valeur à chacun de ces paramètres

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    C'est aussi une solution à laquelle j'avais pensé.
    J'avais, il fut un temps, envisagé de créer une collection COL_Test, par exemple, regroupant les scripts de test concernant les structures et les classes. On perd en souplesse mais c'est un peu plus propre.

    D'un autre côté, c'est ma faute. Pourquoi se lancer dans la POO sachant que ce n'est pas l'un des points forts de Windev .
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il existe une infinité de manières différentes de réaliser un projet, à chacun de voir la manière la plus simple pou y arriver.
    Je n'ai jamais fait appel à la POO en wlangage, mais à des variables globales et à des collections de procédures, donc je reste assez basique

  7. #7
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Maintenant que les vacances sont finies, je up au cas où ....
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

Discussions similaires

  1. Passage d'Objet en paramètre d'un formulaire
    Par wadoo dans le forum IHM
    Réponses: 9
    Dernier message: 03/07/2008, 09h54
  2. Passage d'objet en paramètre de DLL
    Par nek_kro_kvlt dans le forum Langage
    Réponses: 22
    Dernier message: 22/07/2007, 19h50
  3. passage d'objet en paramètre
    Par chilokan dans le forum Delphi
    Réponses: 6
    Dernier message: 07/05/2007, 21h29
  4. [WD10]Passage d'objet en paramètres de methode
    Par Isildur dans le forum WinDev
    Réponses: 25
    Dernier message: 26/03/2007, 17h35
  5. [DLL] Passage d'objet en paramètre
    Par TitiFr dans le forum Langage
    Réponses: 4
    Dernier message: 20/08/2005, 23h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo