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 :
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)
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.
Partager