Sono nuovo al framework Spring. Devo scrivere Unit Test per il repository JPA. Sto provando il semplice metodo repository saveAndFlush()
. Ma nulla salva nel mio repository. Qui è il mio codice sorgente:Deposito unità di prova JPA
TestContext.class
@Configuration
@PropertySource("classpath:log4j.properties")
public class TestContext {
@Bean
public RoleService roleService() {
return Mockito.mock(RoleService.class);
}
@Bean
public RightService RightService() {
return Mockito.mock(RightService.class);
}
@Bean
public RoleRepository RoleRepository() {
return Mockito.mock(RoleRepository.class);
}
}
RoleServiceTest.class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestContext.class})
@WebAppConfiguration
public class RoleServiceTest {
@Autowired
private RoleRepository roleRepository;
@Test
public void TestServices() throws Exception {
RoleDetails first = new RoleDetails();
first.setId("1");
first.setDescription("First Description");
first.setName("First");
roleRepository.saveAndFlush(new RoleEntity(first));
roleRepository.save(new RoleEntity(first));
List<RoleEntity> roles = new ArrayList<RoleEntity>();
roles = roleRepository.findAll();
System.out.println(roles);
assertEquals(1, roles.size());
}
}
E errore:
java.lang.AssertionError: expected:<1> but was:<0>
Sono quasi sicuro che il problema si verifica a causa di testContext.Class. Ho usato questa classe per testare il mio controller e ha funzionato bene, ma ora ho bisogno di testare il mio database e non so come modificare contextConfiguration. Spero che somone mi aiuti. Grazie in anticipo!
Questo è tecnicamente corretta, ma un sacco di primavera i repository di dati utilizzano la logica di auto-implementazione per le operazioni CRUD di base. Il tentativo di istanziarli direttamente non funzionerà; dovresti mostrare come ottenerli con '@ Autowired' o' @ Resource'. –