Bonjour à tous,
Je me permets de vous contacter parce que je suis assez perplexe quant à mes tests Junit...
Dans ma classe Toto, voici ce que l'on peut trouver :
J'essaie de tester mon bean avec Junit avec la méthode testEquals fournie dans mon framework, en utilisant le code suivant :
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 public class CodeOperationYYY extends BaseBean { private static final long serialVersionUID = 1L; private Long id; private int version; public String codeOperation; public String libelleOperation; public NatureOperation natureOperation; public Long getId() { return id; } public void setId( Long id ) { this.id = id; } public int getVersion() { return version; } public void setVersion( int version ) { this.version = version; } public String getCodeOperation() { return codeOperation; } public void setCodeOperation( String codeOperation ) { this.codeOperation = codeOperation; } public String getLibelleOperation() { return libelleOperation; } public void setLibelleOperation( String libelleOperation ) { this.libelleOperation = libelleOperation; } public NatureOperation getNatureOperation() { return natureOperation; } public void setNatureOperation( NatureOperation natureOperation ) { this.natureOperation = natureOperation; } public CodeOperationYYY () { super(); } public CodeOperationYYY ( String codeOperation, String libelleOperation, NatureOperation natureOperation ) { super(); this.codeOperation = codeOperation; this.libelleOperation = libelleOperation; this.natureOperation = natureOperation; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((codeOperation == null) ? 0 : codeOperation.hashCode()); result = prime * result + ((libelleOperation == null) ? 0 : libelleOperation.hashCode()); result = prime * result + ((natureOperation == null) ? 0 : natureOperation.hashCode()); return result; } @Override public boolean equals( Object obj ) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof CodeOperation)) return false; final CodeOperation other = (CodeOperation) obj; if (codeOperation == null) { if (other.codeOperation != null) return false; } else if (!codeOperation.equals( other.codeOperation )) return false; if (libelleOperation == null) { if (other.libelleOperation != null) return false; } else if (!libelleOperation.equals( other.libelleOperation )) return false; if (natureOperation == null) { if (other.natureOperation != null) return false; } else if (!natureOperation.equals( other.natureOperation )) return false; return true; } public String getCodeOperetLibelle() { String lesdeux = getCodeOperation().concat( " " ).concat( getLibelleOperation() ); return lesdeux; } }
Je précise que NatureOperation est une énumération....
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 public class CodeOperationYYYTest extends TestCase { public void testEquals() { final CodeOperationYYY a = new CodeOperationYYY ("22", "Virement particulier" ,NatureOperation.OPE_PRESENTATION ); // objet a - objet de référence" final CodeOperationYYY b = new CodeOperationYYY ("22", "Virement particulier" ,NatureOperation.OPE_PRESENTATION ); // b identique à a final CodeOperationYYY c = new CodeOperationYYY ("16", "Rejet d'AOCT (débit)" ,NatureOperation.OPE_REJET); // c différent de a final CodeOperationYYY d = new CodeOperationYYY ("22", "Virement particulier" ,NatureOperation.OPE_PRESENTATION) // d identique à a mais instance d'une sous-classe de celle de a { private static final long serialVersionUID = 1L; }; new EqualsTester( a, b, c, d ); } }
JUnit me plante avec la trace suivante :
junit.framework.AssertionFailedError: a.equals(d)
at junit.framework.Assert.fail(Assert.java:47)
at com.gargoylesoftware.base.testing.EqualsTester.assertClassAndSubclass(EqualsTester.java:163)
at com.gargoylesoftware.base.testing.EqualsTester.<init>(EqualsTester.java:132)
at fr.gouv.finances.cp.psx.test.dev.bean.CodeOperationYYYTest.testEquals(TotoTest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Auriez-vous une idée de la raison du plantage, sachant que cette mécanique fonctionne parfaitement pour d'autres beans, ou si je modifie la valeur NatureOperation.OPE_PRESENTATION de mon objet d?
D'avance, merci!
GroToTo
Partager