Bonjour,
Le test unitaire CustomerServiceTest passe sans pb (et en particulier en débug), Parrfois il ne passe pas (sans débug). Alltests et gradle mark me génère cette erreur. j'ai vérifié la table T_CUSTOMER. elle contient une ligne avec l'id, le nom et le prénom, les autres champs sont à NULL et c'est ça qui générè cette erreur. Je ne sais pas s'il s'agoit d'un problème de temps de réponse de la base qui est rop lente ou d'un problème dans suppression de la ligne avec deletecustmer
Merci de votre aide
testServiceFindAllCustomers(com.yaps.petstore.domain.service.CustomerServiceTest)java.lang.NullPointerException
at com.yaps.petstore.domain.model.Customer.getStreet1(Customer.java:99)
at com.yaps.petstore.domain.service.CustomerServiceImpl.transformCustomer2DTO(CustomerServiceImpl.java:199)
at com.yaps.petstore.domain.service.CustomerServiceImpl.transformCustomers2DTOs(CustomerServiceImpl.java:219)
at com.yaps.petstore.domain.service.CustomerServiceImpl.findCustomers(CustomerServiceImpl.java:178)
at com.yaps.petstore.domain.service.CustomerServiceImpl$$FastClassBySpringCGLIB$$a356616a.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.transaction.interceptor.TransactionInterceptor$$Lambda$748/2025395550.proceedWithInvocation(Unknown Source)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
at com.yaps.petstore.domain.service.CustomerServiceImpl$$EnhancerBySpringCGLIB$$be3a9a4b.findCustomers(<generated>)
at com.yaps.petstore.domain.service.CustomerServiceTest.findAllCustomers(CustomerServiceTest.java:290)
at com.yaps.petstore.domain.service.CustomerServiceTest.testServiceFindAllCustomers(CustomerServiceTest.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:38)
at AllTests.main(AllTests.java:45)
Glg203 : TP07
Modérateurs : graffiop, jmdouin, agoncal, mlebihan
Re: Glg203 : TP07
Ton null pointeur exception s'est produit dans cette ligne at com.yaps.petstore.domain.model.Customer.getStreet1(Customer.java:99)
Customer.getStreet1 j'imagine que dans getStreet1 tu fait appelle a adress.getStreet1() donc c'est object adress qui est null ..
pour résoudre ce problème dans tes constructeurs de l'objet Customer faut initialiser l'objet adress comme cela ..
public Customer(.. ) {
adress = Address()
}
N'oublie pas l’annotation d'ajouter @Embedded address :
@Embedded
private final Address address;
Customer.getStreet1 j'imagine que dans getStreet1 tu fait appelle a adress.getStreet1() donc c'est object adress qui est null ..
pour résoudre ce problème dans tes constructeurs de l'objet Customer faut initialiser l'objet adress comme cela ..
public Customer(.. ) {
adress = Address()
}
N'oublie pas l’annotation d'ajouter @Embedded address :
@Embedded
private final Address address;
Re: Glg203 : TP07
Bonjour,
Il faut aussi affecter les attributs de l'adresse lors de la création du CustomerDTO dans la méthode "private CustomerDTO transformCustomer2DTO(final Customer customer)". De la même façon, on lui a affecté les attributs "minimums" de Customer : id, firstname et lastname.
Cf.
at com.yaps.petstore.domain.service.CustomerServiceImpl.transformCustomer2DTO(CustomerServiceImpl.java:199)
at com.yaps.petstore.domain.service.CustomerServiceImpl.transformCustomers2DTOs(CustomerServiceImpl.java:219)
Cordialement,
Isabelle
Il faut aussi affecter les attributs de l'adresse lors de la création du CustomerDTO dans la méthode "private CustomerDTO transformCustomer2DTO(final Customer customer)". De la même façon, on lui a affecté les attributs "minimums" de Customer : id, firstname et lastname.
Cf.
at com.yaps.petstore.domain.service.CustomerServiceImpl.transformCustomer2DTO(CustomerServiceImpl.java:199)
at com.yaps.petstore.domain.service.CustomerServiceImpl.transformCustomers2DTOs(CustomerServiceImpl.java:219)
Cordialement,
Isabelle
Re: Glg203 : TP07
Merci j'avais trouvé en deboguant au niveau de Test de Order. Le piige est que Adresse est donnée et on est censé ne pas le modifier. Il fallait mettre les attributs de Adresse, Customer et CreditCard à "" lors de leur déclaration
Comme ça in a au niveau de la base des chaines vides au lieu de NULL
Comme ça in a au niveau de la base des chaines vides au lieu de NULL