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 :



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;
 
	}
 
}
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
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 );
			}
	}
Je précise que NatureOperation est une énumération....

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