Я пишу тестовые примеры Junit для следующего класса @Component. На самом деле я использую Sql Server для своего исходного приложения. Но, как часть тестирования, я использую в памяти h2 db. И я хочу протестировать этот класс беззапуск исходного приложения. Если я использую репозиторий в тестовом классе, я вижу данные, возвращаемые в тестовом режиме, но именно тогда, когда я вызываю метод void внутри класса @Component, получая указатель NULL.Вот мой код.
@Component
public class CandidatesTableServiceImpl {
@Autowired
private CandidatesTableRepository candidatesTableRepository;
@Transactional
public void getAllRecordsFromCandidateTable() throws ParseException {
List<CandidatesTable> customerRecord = candidatesTableRepository
.findByStatus(status);
/** This method throwing Null pointer exception when calling from method **/
}
мой src / test / reources / application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=sa
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
# Create DDL
spring.jpa.hibernate.ddl-auto=create
И мой класс Test выглядит следующим образом
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2)
@Transactional
public class CandidateTableTest {
@Autowired
TestEntityManager entityManager;
@Autowired
CandidatesTableRepository candidatesTableRepository;
String status;
@Before
public void init() {
CandidatesTableServiceImpl candidatesTableServiceImpl= new candidatesTableServiceImpl()
}
@Test
public void checkSaveMethod() throws ParseException {
CandidatesTable candidatesTable = new CandidatesTable();
candidatesTable.setStatus(status);
candidatesTable.setCandidatesTableID(1);
candidatesTable.setAccountNumber("2000321654");
candidatesTableRepository.save(candidatesTable);
this.entityManager.persist(candidatesTable);
/** This method works fine **/
List<CandidatesTable> alertRecord = candidatesTableRepository.findByStatus(status);
/** This method throwing NUll Pointer excption **/
candidatesTableServiceImpl.getAllRecordsFromCandidateTable();
}
}