java.lang.reflektieren.invocationtargetexception verursachen null in Junit
Ich versuche mein junit test case, aber es zeigt, wie nullpointerexception. wenn ich debug zeigt seine als java.lang.reflektieren.invocationtargetexception verursachen null. Bitte helfen Sie mir.
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());
}
}
Mein Service Klasse ist
public class StudentService {
@Inject
StudentDAO stuDao;
public StudentVo getStudent(String id){
return stuDao.getStudent(id);
}
public StudentDAO getStuDao() {
return stuDao;
}
}
Versagen seine Spur nur zeigen, wie "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)
- Können Sie den vollständigen stacktrace bitte?
- Habe ich eingefügt, alle meine code und die Fehlermeldung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich es behoben, indem Sie folgenden code
in der setUp () - Methode, die ich geschrieben habe
Gibt es einige Probleme mit dem code.
Ersten mock für das DAO. Sie haben keine variable innerhalb der Test-Klasse namens student. Dies dürfte wohl stuVO, es sei denn, Sie konvertieren aus einem anderen Objekt in der stuVO-Objekt. So oder so wird die variable student muss definiert werden, oder ersetzt, die mock.
Andere Sache ist, dass Ihre ein-und Ausgänge keinen Sinn machen. Sie haben StudId als "123" in den setter-aber als int in der geltend zu machen. Sie können tun, eine Umwandlung in die setter-oder getter-aber stellen Sie sicher, dass Ihre Arten entsprechen, in dem geltend zu machen.
Andere Sache, die ich gerade bemerkt.
Sie sind nicht die Einstellung Ihrer verspottet DAO-innen des Dienstes. Dies ist die Ursache Ihrer null-Zeiger ist, denn Ihr service ist der Versuch zum aufrufen einer Methode für ein null-DAO, die ich gehe davon ist autowired in.
Versuchen, diese