I use Spring Roo and I rely on Roo's data on demand for my integration tests.
I recently realized that the very same integration tests that run smoothly in Eclipse break when I run them from Maven.
The problem seems to come from Spring Roo's data on demand. For instance I get errors such as...
testFindPlisByMultiFieldWithNothingSet(trc.suivi.core.repository.PliRepositoryTest): expected:<10> but was:<0>
...for the following test...
@Test
public void testFindPlisByMultiFieldWithNothingSet() {
PliDataOnDemand dod = new PliDataOnDemand();
dod.init();
PliQueryInfo pliQueryInfo = new PliQueryInfo();
List<Pli> plis = pliRepository.findPlisByMultiField(pliQueryInfo, null, null, null, null);
assertEquals(10, plis.size());
}
...indicating that dod.init()
does not populate my in-memory database...
FYI, PliDataOnDemand is a data on demand class for one of our entities called Pli.
Can anyone please help?
EDIT:
From the command line: I ran "mvn test"
From eclipse: I just ran the test from the eclipse menu
Maven version: 3.0.4
EDIT 2:
Output from aspectJ maven plugin:
[INFO] 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java:8) is annotated with @Component type annotation from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:26)
[INFO] 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java:8) is annotated with @Configurable type annotation from 'trc.suivi.core.domain.PliDataOnDemand_Roo_Configurable' (PliDataOnDemand_Roo_Configurable.aj:11)
[INFO] Extending interface set for type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) to include 'org.springframework.beans.factory.aspectj.ConfigurableObject' (AnnotationBeanConfigurerAspect.aj)
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped field from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'java.util.Random trc.suivi.core.domain.PliDataOnDemand.rnd')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped field from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'java.util.List<trc.suivi.core.domain.Pli> trc.suivi.core.domain.PliDataOnDemand.data')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped field from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'trc.suivi.core.domain.UtilisateurDataOnDemand trc.suivi.core.domain.PliDataOnDemand.utilisateurDataOnDemand')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'trc.suivi.core.domain.Pli trc.suivi.core.domain.PliDataOnDemand.getNewTransientPli(int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setDateAnnulation(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setDateCreation(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setDateModification(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setDateReception(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setFDV(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setIdentifiant(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setNbPlisFDVEstime(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setNumeroPli(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setPaiement(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setStatut(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.setTypePli(trc.suivi.core.domain.Pli, int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'trc.suivi.core.domain.Pli trc.suivi.core.domain.PliDataOnDemand.getSpecificPli(int)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'trc.suivi.core.domain.Pli trc.suivi.core.domain.PliDataOnDemand.getRandomPli()')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'boolean trc.suivi.core.domain.PliDataOnDemand.modifyPli(trc.suivi.core.domain.Pli)')
[INFO] Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java) has intertyped method from 'trc.suivi.core.domain.PliDataOnDemand_Roo_DataOnDemand' (PliDataOnDemand_Roo_DataOnDemand.aj:'void trc.suivi.core.domain.PliDataOnDemand.init()')
[INFO] Join point 'initialization(void org.springframework.beans.factory.aspectj.ConfigurableObject.<init>())' in Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java:8) advised by before advice from 'org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect' (spring-aspects-3.1.1.RELEASE.jar!AbstractDependencyInjectionAspect.class:78(from AbstractDependencyInjectionAspect.aj)) [with runtime test]
[INFO] Join point 'initialization(void org.springframework.beans.factory.aspectj.ConfigurableObject.<init>())' in Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java:8) advised by afterReturning advice from 'org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect' (spring-aspects-3.1.1.RELEASE.jar!AbstractDependencyInjectionAspect.class:87(from AbstractDependencyInjectionAspect.aj)) [with runtime test]
[INFO] Join point 'initialization(void trc.suivi.core.domain.PliDataOnDemand.<init>())' in Type 'trc.suivi.core.domain.PliDataOnDemand' (PliDataOnDemand.java:8) advised by afterReturning advice from 'org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect' (spring-aspects-3.1.1.RELEASE.jar!AbstractDependencyInjectionAspect.class:87(from AbstractDependencyInjectionAspect.aj)) [with runtime test]
EDIT 3:
I get this:
testFindPlisByMultiFieldWithIdentifiantSet(trc.suivi.core.repository.PliRepositoryTest): Unable to find trc.suivi.core.domain.Utilisateur with id 1; nested exception is javax.persistence.EntityNotFoundException: Unable to find trc.suivi.core.domain.Utilisateur with id 1
for the following test:
@Test
public void testFindPlisByMultiFieldWithIdentifiantSet() {
PliDataOnDemand dod = new PliDataOnDemand();
Pli pli = dod.getSpecificPli(0);
pli.setIdentifiant("theIdentifiant");
pliRepository.save(pli);
PliQueryInfo pliQueryInfo = new PliQueryInfo();
pliQueryInfo.setIdentifiant("theIdentifiant");
List<Pli> plis = pliRepository.findPlisByMultiField(pliQueryInfo, null, null, "identifiant", "desc");
assertEquals(1, plis.size());
}