Glg203 : TP07

Modérateurs : graffiop, jmdouin, agoncal, mlebihan

chaba_el
Messages : 8
Inscription : 13 oct. 2019 13:51

Glg203 : TP07

Message par chaba_el » 26 nov. 2019 10:26

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)

harrak_z
Messages : 66
Inscription : 19 oct. 2019 20:15

Re: Glg203 : TP07

Message par harrak_z » 26 nov. 2019 13:17

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;

delign_i
Messages : 25
Inscription : 02 avr. 2019 16:18

Re: Glg203 : TP07

Message par delign_i » 26 nov. 2019 14:56

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

chaba_el
Messages : 8
Inscription : 13 oct. 2019 13:51

Re: Glg203 : TP07

Message par chaba_el » 26 nov. 2019 17:40

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

Répondre