Bonjour,
Alors je vous explique tout d'abord le contexte:
Il y a une application qui permet d' accueillir des plugins et un plugin que je suis entrain de développer.
Le plugin est un outil qui permet de tester des pages web, on peut ajouter des tests sans ajouter une ligne de code dans le plugin car il y a un système qui parse le jar du plugin et voit chaque classe de test. Je charge ces classes dans la JVM, je les instancie et ensuite j'appel des méthode qui sont définit par une classe abstraite (pour executer le test, changer la langue et récupérer la description textuel du test).
J'arrive à lancer le plugin dans l'application, la méthode de changement langue marche bien, de même pour celle qui renvoit la description mais au moment où je souhaites executer un test il ne trouve pas la méthode (par exemple wa11y.tests.rgaa22.cadres.Cadres01.controle(wa11y.tests.util.Message) c'est pourtant les bon package ).
Mais le plus bizzard c'est quand je lance mon plugin tous seul les tests s'exécutent bien mais quand le plugin est lancé de l'application ils ne se lancent pas...
Code pour récupérer la méthode:
Déclaration de la methode abstraite dans la classe abstraite:
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 Message[] mess = new Message[1]; mess[0] = (Message) param; System.out.println("debut de recup methode controle(Message) "+test.getClass().getName()); Method control=null; Class[] classParam = new Class[1]; classParam[0]=Message.class; try{ control = test.getClass().getMethod(methodeName, classParam); }catch (Exception e){ System.out.println(e.toString()); } System.out.println("Fin recup, debut invoke"); Message messageResult = (Message) control.invoke(test, mess);
Exemple pour de la méthode controle pour la classe Cadres01 qui hérite de la classe abstraite ControleRGAA:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public abstract Message controle(Message m);
Merci pour vos réponses
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 package wa11y.tests.rgaa22.cadres; import org.w3c.dom.Element; import wa11y.tests.rgaa22.ControleRGAA; import wa11y.tests.util.Message; /** * @version 1.1 * @author (version 1.1)Licence Professionnelle S2IMa 10-11 * * @Project : WA11Y * @License : Cecill-c * * RGAA22 Control class. Check if title attribute in frame or iframe is relevant */ public class Cadres01 extends ControleRGAA{ private Message message; /** * Constructor * * @param url, String */ public Cadres01(String url) { super(url); } /** * Check title attribute in "iframe" and "frame" * * @return result, int, 0 if NOK, 2 if NA, 3 if operator check is needed */ public Message controle(Message m) { System.out.println("Controle de Cadres01"); this.message=m; if (message==null) { message=new Message(); message.setTestResult(NA); } //int result = NA; String tag = "frame"; String tag2 = "iframe"; String attribut = "title"; try { array = dom.getDataByBalise(tag); array.addAll(dom.getDataByBalise(tag2)); value = ""; Element elem; for (int i=0; i < array.size() ;i++){ elem = array.get(i); if (elem.getAttribute(attribut).length()>0 && message.getTestResult() != NOK){ message.setTestResult(OK); value += "\n " + attribut + "=\"" + elem.getAttribute(attribut) +"\"" ; } else message.setTestResult(NOK); } System.out.println("value=>"+value); } catch (Exception e) { e.printStackTrace(); } return message; } }![]()
Partager