emphasized textI have class with EntityManager field:
@Service
public class ClientRepositoryImpl implements ClientRepository {
@PersistenceContext
private final EntityManager em;
public ClientRepositoryImpl(EntityManager em) {
this.em = em;
}
@Override
@SuppressWarnings("unchecked")
public List<Client> filterClients(ClientFilter filter) {
return em.createNativeQuery(read("some.sql"), Client.class)
.setSomeParameter(...)
.getResultList();
}
}
Also I have test class for this class:
@DataJpaTest
@ActiveProfiles("test")
@EntityScan("com.example.dao")
@RunWith(SpringRunner.class)
@AutoConfigureTestDatabase(replace = NONE)
@TestPropertySource(properties = {
"spring.datasource.url jdbc:hsqldb:mem:PUBLIC;sql.syntax_ora=true",
"spring.datasource.data classpath:/sql/test.sql",
"spring.datasource.sql-script-encoding utf-8"
})
public class ClientRepositoryImplTest {
@PersistenceContext
private EntityManager em;
private ClientRepository clientRepository = new ClientRepositoryImpl(em);
@Test
public void filterClientsTest() throws Exception {
ClientFilter clientFilter = ClientFilter.builder()
...
.build();
assertEquals(asList(client1, client2, client3), clientRepository.filterClients(clientFilter));
}
}
When I run test I got java.lang.NullPointerException, because em
is null. How can I create or get from spring context EntityManager instance for my repository???
Aucun commentaire:
Enregistrer un commentaire