Problème d'instrumentation avec jContractor
Bonjour !
je suis un débutant en java et je souhaite utiliser JContractor (http://jcontractor.sourceforge.net/) et pas un autre mode de programation par contrat... 8-)
j'ai créé un petit programme tout simple avec une classe instrumentée. les voici
La class main :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class main_with_problem
{
/**
* @param args
*/
public static void main(String[] args)
{
@SuppressWarnings("unused")
double result = 0;
Operations Op = new Operations();
result = Op.sqrt(-4.0);
}
} |
la class "Operations" :
Code:
1 2 3 4 5 6 7 8
|
public class Operations
{
public double sqrt(double value)
{
return Math.sqrt(value);
}
} |
les contrats de la classe "Operations"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public class Operations_CONTRACT extends Operations
{
protected boolean _Invariant()
{
System.out.println("=== Invariant ===");
return true;
}
protected boolean sqrt_PostCondition (double value)
{
System.out.println("=== PostCondition ===");
return value > 0;
}
protected boolean sqrt_PreCondition (double value)
{
System.out.println("=== PreCondition ===");
return value > 0;
}
} |
J'effectue ensuite les opérations suivantes (j'ai volontairement enlevé ici les classpath etc pour que se soit lisible):
javac *.java
java jInstrument Operations.class
java main_with_problem
j'obtiens le resultat suivant:
Citation:
Instrumenting Operations at 'all' level
=== Invariant ===
=== Invariant ===
=== Invariant ===
Je constate donc que le check d'invariant est bien appellé, mais pas les preconditions et postconditions... Pourquoi ??? :calim2:
Merci d'avance pour votre aide !!! ;)