Nullpointerexceptiopn avec un objet de l'interface crudrepository
moses-16
-
moses-16 -
moses-16 -
package com.shopme.admin.user;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.Replace;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import com.shopme.common.entity.Role;
@DataJpaTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
public class RoleRepositoryTests {
@Autowired
private RoleRepository repo;
@Test
public void testCreateFirstRole(){
Role roleAdmin = new Role("Admin" , "manage everythings");
Role savedRole =repo.save(roleAdmin);
assertThat(savedRole.getId()).isGreaterThan(0);
}
}
voici le code de ma classe test,lorsque je lance un test junit il me retourne un nullpointerexception sur l'objet repos avec ce message:
java.lang.NullPointerException: Cannot invoke "com.shopme.admin.user.RoleRepository.save(Object)" because "this.repo" is null
A voir également:
- Nullpointerexceptiopn avec un objet de l'interface crudrepository
- Trouver objet avec photo - Guide
- Vente objet occasion entre particulier - Guide
- Common interface 5v only - Forum TV & Vidéo
- Mesurer un objet - Guide
- Interface netflix - Accueil - Streaming
2 réponses
Bonjour,
Tu devrais indiquer à JUnit que tu as besoin de démarrer le contexte Spring, comme le vrai programme le fait au démarrage (ce qui peut être long).
Par exemple avec @RunWith(SpringJUnit4ClassRunner.class) ou @ExtendWith(SpringExtension.class) selon ta version de JUnit.
Tu devrais indiquer à JUnit que tu as besoin de démarrer le contexte Spring, comme le vrai programme le fait au démarrage (ce qui peut être long).
Par exemple avec @RunWith(SpringJUnit4ClassRunner.class) ou @ExtendWith(SpringExtension.class) selon ta version de JUnit.
Tu devrais reprendre une configuration d'un projet qui fonctionne et t'en inspirer.
Il y a notamment les archetype de Spring Boot, voici un exemple pour data-jpa :
Ça te donnera une base qui fonctionne, aussi bien dans la config src/main que dans la config src/test
Il y a notamment les archetype de Spring Boot, voici un exemple pour data-jpa :
mvn archetype:generate -DarchetypeGroupId=org.springframework.boot -DarchetypeArtifactId=spring-boot-sample-data-jpa-archetype -DgroupId=com.shopme.admin.user -DartifactId=spring-data-jpa -DinteractiveMode=false cd spring-data-jpa mvn install
Ça te donnera une base qui fonctionne, aussi bien dans la config src/main que dans la config src/test
j'ai cette erreur
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testCreateFirstRole], {ExactMatcher:fDisplayName=testCreateFirstRole(com.shopme.admin.user.RoleRepositoryTests)], {LeadingIdentifierMatcher:fClassName=com.shopme.admin.user.RoleRepositoryTests,fLeadingIdentifier=testCreateFirstRole]] from org.junit.internal.requests.ClassRequest@2b91004a at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:83) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:74) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:49) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:526) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)