Bonjour,

je suis en train d'écrire des tests Unitaires sous Eclipse Galileo, avec Java 1.6 et JUnit 3.8.2.

Sur le tuto de Romain Guy, j'ai cru comprendre que AssertEqual vérifiet que deux objets sont égaux.
Je teste une classe de tableau d'entier. Cette classe contient un attribut int[] et différentes méthodes pour intéragir avec ce tableau.
Pour instancier un objet de cette classe, j'ai deux constructeurs possibles :
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
	/**
         * constructeur a partir d'un tableau d'entier (copie du tableau)
         * @param tableau d'entiers
         */
	public TabInt(int[] tableau)
	{
		this.tab = tableau; 
	}
 
	/**
         * constructeur d'un tableau vide
         * @param taille du tableau a instancier
         */
	public TabInt(int taille)
	{
		this.tab = new int[taille]; 
	}

Je veux vérifier que mes deux méthodes de construction arrivent au même résultat.
Pour ce faire, j'instancie un objet par un des constructeurs dans le setUp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public void setUp() throws Exception 
	{
		int[] tableau = {0,1,2,3};
		this.tab = new TabInt(tableau);
	}
et l'autre dans directement dans la méthode de test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
public void testTabInt2()
	{
		TabInt tab2 = new TabInt(4);
		tab2.setValeur(0, 0);
		tab2.setValeur(1, 1);
		tab2.setValeur(2, 2);
		tab2.setValeur(3, 3);
 
		assertEquals(tab2, tab);
	}
et j'obtiens le résultat suivant :
junit.framework.AssertionFailedError: expected:<[0 , 1 , 2 , 3]> but was:<[0 , 1 , 2 , 3]>
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotEquals(Assert.java:280)
at junit.framework.Assert.assertEquals(Assert.java:64)
at junit.framework.Assert.assertEquals(Assert.java:71)
at fr.statlife.LAM.test.TabIntTest.testTabInt2(TabIntTest.java:41)
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:597)
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 junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
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:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Je ne comprends pas pourquoi : mes deux objets devraient pourtant être égaux, non?
Toute aide ou conseil seront les bienvenue