Salut à tous,

j'ai une Map static contenant des chaines de caractères :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
public static Map<String, String> interpretationIMC = new LinkedHashMap<String, String>();
	static{
		interpretationIMC.put("moins de 16,5", "Dénutrition");
		interpretationIMC.put("16,5 à 18,5", "Maigreur");
		interpretationIMC.put("18,5 à 25", "Corpulence normale");
		interpretationIMC.put("25 à 30", "Surpoids");
		interpretationIMC.put("30 à 35", "Obésité modérée");
		interpretationIMC.put("35 à 40", "Obésité sévère");
		interpretationIMC.put("plus de 40", "Obésité massive");
	}
quand je l'ai sous cette forme et que je teste le getter qui me la renvoie, le test ne passe pas à cause des accents :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
	@Test
	public void testGetinterpretationAttendu() {
		Map<String, String> interpretationAttendu = new HashMap<String, String>();
		interpretationAttendu.put("moins de 16,5", "Dénutrition");
		interpretationAttendu.put("16,5 à 18,5", "Maigreur");
		interpretationAttendu.put("18,5 à 25", "Corpulence normale");
		interpretationAttendu.put("25 à 30", "Surpoids");
		interpretationAttendu.put("30 à 35", "Obésité modérée");
		interpretationAttendu.put("35 à 40", "Obésité sévère");
		interpretationAttendu.put("plus de 40", "Obésité massive");
 
		assertEquals(interpretationAttendu, bilan.getInterpretationIMC());
	}
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
java.lang.AssertionError: expected:<{25 à 30=Surpoids, 30 à 35=Obésité modérée, 16,5 à 18,5=Maigreur, 35 à 40=Obésité sévère, moins de 16,5=Dénutrition, plus de 40=Obésité massive, 18,5 à 25=Corpulence normale}> but was:<{moins de 16,5=D�nutrition, 16,518,5=Maigreur, 18,525=Corpulence normale, 2530=Surpoids, 3035=Ob�sit� mod�r�e, 3540=Ob�sit� s�v�re, plus de 40=Ob�sit� massive}>
	at org.junit.Assert.fail(Assert.java:91)
	at org.junit.Assert.failNotEquals(Assert.java:645)
	at org.junit.Assert.assertEquals(Assert.java:126)
	at org.junit.Assert.assertEquals(Assert.java:145)
	at fr.statlife.bilanNutrition.TestBilanNutrition.testGetinterpretationAttendu(TestBilanNutrition.java:173)
	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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
	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)
Maintenant, si dans mon getter je n'utilise plus ma Map static, mais que j'en instancie une nouvelle (exactement la même, mais pas static cette fois):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
	@Override
	public Map<String, String> getInterpretationIMC() {
		Map<String, String> interpretationIMC = new LinkedHashMap<String, String>();
		interpretationIMC.put("moins de 16,5", "Dénutrition");
		interpretationIMC.put("16,5 à 18,5", "Maigreur");
		interpretationIMC.put("18,5 à 25", "Corpulence normale");
		interpretationIMC.put("25 à 30", "Surpoids");
		interpretationIMC.put("30 à 35", "Obésité modérée");
		interpretationIMC.put("35 à 40", "Obésité sévère");
		interpretationIMC.put("plus de 40", "Obésité massive");
		return interpretationIMC;
		//return Coefficient.interpretationIMC;
	}
Le test passe sans le moindre problème.

Alors bon, dans l'absolue je peux utiliser cette deuxième méthode pour ne pas avoir de problème, mais si quelqu'un peut m'expliquer le pourquoi du comment, ça serait chouette, car je comprends pas du tout pourquoi les accents passent pas quand la Map est static...
Merci d'avance !

EDIT : dans la fenêtre de code de dvp, on voit que les accents sont transformé dans un autre encodage... Reste à savoir pourquoi...