Why are null's fields returned in the test?

JUnit version is 5. I tried to saddle through the fourth, but the error is the same. If done through @RunWith (SpringRunner.class) – the check does not stop at all. Also I tried to do it through @MockBean – and that didn’t help. Service in normal mode works fine. Thanks.

Dependencies in pom.xml:

<dependencies>     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-data-jpa</artifactId>     </dependency>     <dependency>         <groupId>org.springframework.shell</groupId>         <artifactId>spring-shell-starter</artifactId>         <version>2.0.1.RELEASE</version>     </dependency>     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-web</artifactId>     </dependency>      <dependency>         <groupId>com.h2database</groupId>         <artifactId>h2</artifactId>         <scope>runtime</scope>     </dependency>     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-test</artifactId>         <scope>test</scope>     </dependency>     <dependency>         <groupId>org.projectlombok</groupId>         <artifactId>lombok</artifactId>         <version>1.18.2</version>         <scope>provided</scope>     </dependency>     <dependency>         <groupId>org.junit.jupiter</groupId>         <artifactId>junit-jupiter-engine</artifactId>         <scope>test</scope>     </dependency>  </dependencies> 

Repository:

    @Repository public interface ClientRepository extends PagingAndSortingRepository<Client, UUID> {  } 

Service and TestService:

@ShellComponent @SuppressWarnings("Duplicates") public class ClientService {      private final ClientRepository clientRepository;      @Autowired     public ClientService(ClientRepository clientRepository)     {         this.clientRepository = clientRepository;     }      @ShellMethod("Shows all clients in db")     @Transactional     public Iterable<ClientDTO> showAllClients() {         return StreamSupport.stream(clientRepository.findAll().spliterator(), false).map(client -> {             ClientDTO clientDTO = new ClientDTO();             clientDTO.setId(client.getId());             clientDTO.setName(client.getName());             clientDTO.setTotalDebt(client.getDebts().stream()                     .map(Debt::getValue)                     .reduce(BigDecimal::add)                     .orElse(BigDecimal.ZERO)                     .subtract(client.getPayments().stream()                             .map(Payment::getValue)                             .reduce(BigDecimal::add)                             .orElse(BigDecimal.ZERO)));             return clientDTO;         }).collect(Collectors.toList());     }      @ShellMethod("Adds client to db")     @Transactional     public UUID addClient(@ShellOption String name) {         Client client = new Client();         client.setId(UUID.randomUUID());         client.setName(name);         client = clientRepository.save(client);         return client.getId();     }      @ShellMethod("Adds debt to client")     @Transactional     public UUID addDebtToClient(@ShellOption UUID clientId, @ShellOption BigDecimal value) {         Client client = clientRepository.findById(clientId).orElseThrow(RuntimeException::new);         Debt debt = new Debt();         debt.setId(UUID.randomUUID());         debt.setValue(value);         debt.setClient(client);         client.getDebts().add(debt);         clientRepository.save(client);         return debt.getId();     }      @ShellMethod("Adds payment to client")     @Transactional     public UUID addPaymentToClient(@ShellOption UUID clientId, @ShellOption BigDecimal value) {         Client client = clientRepository.findById(clientId).orElseThrow(RuntimeException::new);         Payment payment = new Payment();         payment.setId(UUID.randomUUID());         payment.setValue(value);         payment.setClient(client);         client.getPayments().add(payment);         clientRepository.save(client);         return payment.getId();     } } 

The ClientService and ClientRepository fields return null values:

@ExtendWith(SpringExtension.class) @SpringBootTest public class ClientServiceTest {      @Autowired     private ClientService clientService;      @Autowired     private ClientRepository clientRepository;      @Test     public void addClient() {         UUID clientId = clientService.addClient("Сергей");         Optional<Client> client = clientRepository.findById(clientId);          Assert.assertNotNull(client.get());         Assert.assertEquals(clientId, client.get().getId());     }      @Test     public void addDebtToClient() {         UUID clientId = clientService.addClient("Сергей");         UUID debtId = clientService.addDebtToClient(clientId, new BigDecimal(1000));         Optional<Client> clientFromDB = clientRepository.findById(clientId);         Optional<Debt> debt = clientFromDB.get().getDebts().stream()                 .filter(d -> d.getId() == debtId)                 .findFirst();          Assert.assertEquals(debtId, debt.get().getId());         Assert.assertEquals(new BigDecimal(1000), debt.get().getValue());         Assert.assertEquals(clientId, debt.get().getClient().getId());     }      @Test     public void addPaymentToClient() {         UUID clientId = clientService.addClient("Сергей");         UUID paymentId = clientService.addPaymentToClient(clientId, new BigDecimal(1000));         Optional<Client> clientFromDB = clientRepository.findById(clientId);         Optional<Payment> payment = clientFromDB.get().getPayments().stream()                 .filter(p -> p.getId() == paymentId)                 .findFirst();          Assert.assertEquals(paymentId, payment.get().getId());         Assert.assertEquals(new BigDecimal(1000), payment.get().getValue());         Assert.assertEquals(clientId, payment.get().getClient().getId());     } } 

Errors:

    java.lang.NullPointerException     at com.cometrica.javajuniortask.service.ClientServiceTest.addClient(ClientServiceTest.java:32)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.base/java.lang.reflect.Method.invoke(Method.java:566)     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)     at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)     at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at org.junit.runners.ParentRunner.run(ParentRunner.java:413)     at org.junit.runner.JUnitCore.run(JUnitCore.java:137)     at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)     at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)     at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)     at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)   java.lang.NullPointerException     at com.cometrica.javajuniortask.service.ClientServiceTest.addPaymentToClient(ClientServiceTest.java:55)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.base/java.lang.reflect.Method.invoke(Method.java:566)     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)     at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)     at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at org.junit.runners.ParentRunner.run(ParentRunner.java:413)     at org.junit.runner.JUnitCore.run(JUnitCore.java:137)     at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)     at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)     at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)     at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)   java.lang.NullPointerException     at com.cometrica.javajuniortask.service.ClientServiceTest.addDebtToClient(ClientServiceTest.java:41)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.base/java.lang.reflect.Method.invoke(Method.java:566)     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)     at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)     at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)     at org.junit.runners.ParentRunner.run(ParentRunner.java:413)     at org.junit.runner.JUnitCore.run(JUnitCore.java:137)     at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)     at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)     at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)     at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 
Add Comment
0 Answer(s)

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.