Bonjour à tous,

J'ai une question sur la mise en place de tests unitaires avec l'aide de Spring, quelques points sont flous.

Je débute et actuellement mon code est le 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
 
public class InstanceBIReportTest extends AbstractSingleSpringContextTests
{
 
    @Override
    protected String[] getConfigLocations()
    {
        return new String[] { "spring.context-statistics.xml" };
    }
 
    InstanceBI instanceBI;
 
    InstanceBIReport instanceBIReport;
 
    ServletContext servletContext;
 
    @Override
    protected void onSetUp() throws Exception
    {
        instanceBI = new InstanceBI();
        instanceBIReport = (InstanceBIReport) this.getApplicationContext().getBean("instanceBIReport");
 
        servletContext = new MockServletContext("/WebContent", new FileSystemResourceLoader());
    }
 
    @Test
    public void test_initBirtEngine()
    {
        instanceBIReport.initBirtReportEngine(servletContext);
        assertNotNull(instanceBIReport);
    }
 
    /**
     * On ne parviendra pas à avoir le FlexContext, je cherche à tester que cela génère bien une exception
     */
    @Test
    public void test_getServletContextException()
    {
        ServletContext flexServletContext = null;
        try
        {
            flexServletContext = instanceBIReport.getServletContext();
        }
        catch (Exception e)
        {
            assertTrue(e instanceof JadeStatisticsException);
            assertNull(flexServletContext);
        }
    }
 
 
 
    /* (non-Javadoc)
     * @see org.springframework.test.AbstractSingleSpringContextTests#onTearDown()
     */
    @Override
    protected void onTearDown() throws Exception
    {
        // this.applicationContext = null;
    }
 
}
Lorsque je lance mon test unitaire, cela fonctionne, mais en mode DEBUG je vois que je passe 2 fois par getConfigLocations() et donc dans ma console je peux voir que je charge deux fois le contexte. et les beans Spring.
  • Comment-puis je faire pour le charger une seule fois ?
  • Je n'ai également pas trouver le moyen de réaliser mes initialisations du onSetUp une seule fois et non au début de chaque test ?


Je souhaite réaliser cela car je viens d'installer le plugin EclEmma pour valider ma couverture de code mais quand j'exécute mes tests via le plugin, la console JUnit me trouve des conflits entre les beans Spring qui sont chargés deux fois. (Configuration Spring en annotations)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring.context-statistics.xml]; nested exception is java.lang.IllegalStateException: Annotation-specified bean name 'defaultAuthentificationProvider' for bean class [com.gnt.jadebi.core.security.authentification.DefaultAuthentificationProvider] conflicts with existing, non-compatible bean definition of same name and class [com.gnt.jadebi.core.security.authentification.DefaultAuthentificationProvider]
Merci de me donner quelques pistes si vous avez une idée.