Spring Unit-test-JPA-repository
Ich bin neu in Spring-framework. Ich brauche zum schreiben von Unit-Test für JPA-repository. Ich versuche einfach repository saveAndFlush()
Methode. Aber nichts spart in meinem repository. Hier ist mein source code:
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());
}
}
And error:
java.lang.AssertionError: expected:<1> but was:<0>
Ich bin mir fast sicher, dass problem tritt auf, weil der testContext.Class. Ich verwendet diese Klasse zum testen meiner controller und es funktionierte gut, aber jetzt brauche ich zum testen meiner Datenbank und ich weiß nicht, wie zu ändern contextConfiguration. Ich hoffe, dass somone mir helfen wird. Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist aus der TestContext in der Tat. Sie versuchen, speichern Sie Ihr Objekt mit einem mock-Objekt, das nicht richtig ist.
Die Lösung ist die Verwendung der real-repository. Für diese, müssen Sie Folgen Sie den nächsten Schritten:
Ich hoffe, meine Antwort hilft, wenn Sie Hilfe benötigen, zögern Sie bitte wieder!
Repository ist ein mock-Objekt. Ein mock-Objekt, durch definition, ist eine Sache, die nicht tut, was es sollte in der Regel tun, aber tut, was Sie sagen, es zu tun in der Prüfung.
Testen das repository, das repository muss eine echte. Ihre Kontext-Klasse sollte somit lieber
@Autowired
oder@Resource
statt.Wenn mit Spring Boot, das erstellen einer web-app und man wird aus der main () - Methode innerhalb einer Application.class Sie verwenden könnten: