java.lang.de réfléchir.invocationtargetexception cause la valeur null dans Junit
Je suis en train de lancer mon cas de test junit, mais il en montrant que nullpointerexception. quand je debug son montrant que java.lang.de réfléchir.invocationtargetexception cause la valeur null. S'il vous plaît aider moi.
public class StudentTest {
StudentService stuService;
StudentDAO stuDAO;
StudentVO stuVo;
@Before
public void setUp() throws Exception {
System.out.println("In Setup");
stuVo=new StudentVO ();
stuService=new StudentService();
stuDAO=Mockito.mock(StudentDAO.class);
//MockitoAnnotations.initMocks(this);
stuVo.setStudId("123");
stuVo.setName("user1");
Mockito.when(stuDAO.getStudent(stuVo.getStuId())).thenReturn(student);
}
@Test
public void getStudent() throws DataAccessException {
StudentVO stVO=stuService.getStudent(123) ;
Assert.assertEquals("123", stVO.getStuId());
}
}
Ma Classe de Service est
public class StudentService {
@Inject
StudentDAO stuDao;
public StudentVo getStudent(String id){
return stuDao.getStudent(id);
}
public StudentDAO getStuDao() {
return stuDao;
}
}
En échec trace de son tout en montrant que "java.lang.NullPointerException
at com.stu.StudentService.getStudent(StudentService.java:104)
at com.stu.junit.POCJunit.getgetStudent(StudentTest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
- Pouvez-vous d'inclure le stacktrace s'il vous plaît?
- J'ai collé tout mon code et l'erreur
Vous devez vous connecter pour publier un commentaire.
Je l'ai résolu en mettant le code suivant
et dans la méthode setUp() j'ai écrit
Il y a certains problèmes avec votre code.
D'abord sur votre maquette pour le DAO. Vous n'avez pas de variable dans les tests de la classe appelée étudiant. Cela devrait probablement être stuVO, sauf si vous êtes de la conversion à partir d'un autre objet dans le stuVO objet. De toute façon, la variable de l'étudiant devra être défini ou remplacée dans cette maquette.
Une autre chose est que vos entrées et vos sorties ne font pas sens. Vous avez StudId comme "123" dans l'incubateur, mais comme un int dans l'affirmer. Vous pouvez faire un convertir dans l'incubateur ou de lecture, mais assurez-vous que vos types de correspondance dans l'affirmer.
Autre chose, je viens de remarquer.
Vous n'avez pas réglé votre moqué de DAO à l'intérieur du service. C'est l'origine de votre pointeur null parce que votre service à la tente d'appeler une méthode sur un nul DAO que je suis en supposant que est autocâblés dans.
Essayer cette