问题描述
在使用junit的时候,总是抛出空指针异常,如下:javax.ejb.EJBException:java.lang.NullPointerExceptionatorg.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:63)atorg.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)atorg.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)atorg.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)atorg.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)atorg.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)atorg.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:809)atorg.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:608)atorg.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:406)atorg.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:173)Causedby:java.lang.NullPointerExceptionatcn.edu.xmu.cms.controller.impl.GroupManager.getGroupById(GroupManager.java:72)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)atorg.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)atorg.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)atorg.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)atorg.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)atorg.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)atorg.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)atorg.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:809)atorg.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:608)atorg.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:406)atorg.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:173)atorg.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163)atorg.jboss.remoting.Client.invoke(Client.java:1634)atorg.jboss.remoting.Client.invoke(Client.java:548)atorg.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107)at$Proxy0.getGroupById(UnknownSource)atcn.edu.xmu.cms.controller.impl.GroupManagerTest.testGetGroupById(GroupManagerTest.java:51)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atjunit.framework.TestCase.runTest(TestCase.java:164)atjunit.framework.TestCase.runBare(TestCase.java:130)atjunit.framework.TestResult$1.protect(TestResult.java:106)atjunit.framework.TestResult.runProtected(TestResult.java:124)atjunit.framework.TestResult.run(TestResult.java:109)atjunit.framework.TestCase.run(TestCase.java:120)atjunit.framework.TestSuite.runTest(TestSuite.java:230)atjunit.framework.TestSuite.run(TestSuite.java:225)atorg.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)atorg.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)atorg.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)atorg.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107)at$Proxy0.getGroupById(UnknownSource)atcn.edu.xmu.cms.controller.impl.GroupManagerTest.testGetGroupById(GroupManagerTest.java:51)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atjunit.framework.TestCase.runTest(TestCase.java:164)atjunit.framework.TestCase.runBare(TestCase.java:130)atjunit.framework.TestResult$1.protect(TestResult.java:106)atjunit.framework.TestResult.runProtected(TestResult.java:124)atjunit.framework.TestResult.run(TestResult.java:109)atjunit.framework.TestCase.run(TestCase.java:120)atjunit.framework.TestSuite.runTest(TestSuite.java:230)atjunit.framework.TestSuite.run(TestSuite.java:225)atorg.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)测试一般的方法都不会出错,一旦所要测试的方法要连接MYSQL数据库,就会抛出异常,跪求高人解答!
解决方案
解决方案二:
注意这句:atcn.edu.xmu.cms.controller.impl.GroupManager.getGroupById(GroupManager.java:72)
解决方案三:
你数据查询出来的是空的
解决方案四:
你可以先new一个insert进去然后再查询