Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Un peu de tout sur tout
Archives
5 janvier 2011

JAVA : obtenir le nom de la fonction courrante

Pour ne pas à avoir à écrire en dur pour chaque fonction de test (JUnit) le nom de chaque fonction de test pour l'écriture de logs, j'ai voulu obtenir le nom de la fonction en cours d'exécution. L'opération est assez simple mais peut être couteuse, il faudra donc l'utiliser à bon escient et sur des parties de code non critiques.

Le principe, c'est de récupérer le stack d'exécution et de remoter dedans  pour trouver le nom de la fonction.

Voila 2 fonctions qui retrouve  dynamiquement le nom de la fonction au cours de l'exécution :


  /**
   *
   * @return Renvoie le nom de la fonction que l'on est en trai d'executer
   * précédé par le package de la class de la fonction
   */
  public static String getMethodeFullName()
  {
          Throwable t = new Throwable();
          t.fillInStackTrace();

          StackTraceElement e = t.getStackTrace()[1];
          String className = e.getClassName();
          String functionName = e.getMethodName();
          return className + "." + functionName;
  }
  /**
   *
   * @return Renvoie le nom de la fonction que l'on est en trai d'executer
   */
  public static String getMethodeName()
  {
          Throwable t = new Throwable();
          t.fillInStackTrace();
          StackTraceElement e = t.getStackTrace()[1];
          String functionName = e.getMethodName();
          return functionName ;
  }


Exemple d'utilisation :


Assert.assertFalse(FncUtil.getMethodeName()+" : contact deja present, test impossible a realiser", c);


>> ce qui donne  à l'exécution :

java.lang.AssertionError: testAssocierContactRapport : contact deja present, test impossible a realiser

Publicité
Commentaires
Un peu de tout sur tout
Publicité
Un peu de tout sur tout
Publicité