Tester des fonctions/procédures privées

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je travaille avec Ada (eh oui…) et je souhaiterais tester des fonctions privées. Autrement dit, j'ai le code suivant :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
-- .ads
package Module is
begin
  procedure MaProcedure();
end;

-- .adb
package body Module is
  procedure MonAutreProc() is
  begin
    null;
  end;
begin
  procedure MaProcedure() is
  begin
    MonAutreProc();
  end;
end;

Et je souhaiterais tester MonAutreProc depuis un autre fichier, test_module.adb. Seulement, il me dit qu'il ne la connait pas.

Puis-je remédier à cela simplement ?

Merci.

+0 -0

Tes 2 packages sont incorrectement declarés .

À ce niveau , tu pourra pas compiler .

De plus, si tu dis pas pourquoi tu veux appeler ta procedure vide, on pourra pas plus t'aider :)

Donne plus d'info et tu aura des réponses plus adaptés à ce que tu veux faire .

Néanmoins, la correction =

1
2
3
4
5
6
7
-- module.ads
PACKAGE Module IS

  procedure MaProcedure(); -- "()" : À preciser ,
  procedure MonAutreProc();  -- sinon autant ne rien mettre .

END Module;
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
-- module.adb
PACKAGE BODY Module IS

  procedure MonAutreProc() is --  "()" : À preciser ,
  begin                       -- sinon autant ne rien mettre .
    null; -- Aucun intêret .
  end MonAutreProc;

  procedure MaProcedure() is   --  Pareil
  begin
    MonAutreProc(); -- Ne pas faire ça dans un package ,
  end MaProcedure;      -- mais plutôt dans un main.adb par exemple.

END Module;

Édité par galgame

+0 -1

Je crois que le principe était justement d'avoir une procédure privée, invisible depuis l'extérieur. Donc si ta solution c'est "rends la visible et publique", je pense que tu es un peu à côté.

First : Always RTFM - "Tout devrait être rendu aussi simple que possible, mais pas plus." A.Einstein

+0 -0

Il me semble que ce n'est pas une bonne idée de chercher à tester directement une méthode privée.

C'est l'interface publique qu'on cherche à tester, et normalement ta méthode privée n'existe qu'après refactoring. C'est la partie publique utilisant cette méthode privée que tu devrais tester. Dans l'idéal le test existe avant le refactoring.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte