我正在尝试使用ActivityUnitTestCase测试Android应用程序的MainActvity.出于某种原因,我甚至无法启动测试,因为它失败并出现以下错误跟踪:
java.lang.RuntimeException: Exception during suite constructionat androID.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:238)at java.lang.reflect.Method.invokeNative(Native Method)at androID.test.AndroIDTestRunner.runTest(AndroIDTestRunner.java:169)at androID.test.AndroIDTestRunner.runTest(AndroIDTestRunner.java:154)at androID.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537)at androID.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1594)Caused by: java.lang.NullPointerException: name == nullat java.lang.class.getConstructorOrMethod(Class.java:446)at java.lang.class.getmethod(Class.java:915)at androID.test.suitebuilder.TestMethod.getAnnotation(TestMethod.java:60)at androID.test.suitebuilder.annotation.HasMethodAnnotation.apply(HasMethodAnnotation.java:39)at androID.test.suitebuilder.annotation.HasMethodAnnotation.apply(HasMethodAnnotation.java:30)at com.androID.internal.util.Predicates$OrPredicate.apply(Predicates.java:106)at androID.test.suitebuilder.annotation.HasAnnotation.apply(HasAnnotation.java:42)at androID.test.suitebuilder.annotation.HasAnnotation.apply(HasAnnotation.java:31)at com.androID.internal.util.Predicates$NotPredicate.apply(Predicates.java:122)at androID.test.suitebuilder.TestSuiteBuilder.satisfIEsAllPredicates(TestSuiteBuilder.java:253)at androID.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:189)at androID.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:371)at androID.app.ActivityThread.handleBindApplication(ActivityThread.java:3943)at androID.app.ActivityThread.access00(ActivityThread.java:127)at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1189)at androID.os.Handler.dispatchMessage(Handler.java:99)at androID.os.Looper.loop(Looper.java:137)at androID.app.ActivityThread.main(ActivityThread.java:4447)at java.lang.reflect.Method.invokeNative(Native Method)at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:551)at dalvik.system.NativeStart.main(Native Method)
我无法调试它,因为它在它到达我可以放在测试用例类中的任何断点之前失败了.我正在使用ActivityInstrumentationTestCase2类进行的任何测试都没有问题.
在控制台中显示以下错误消息:
Test run Failed: Instrumentation run Failed due to 'java.lang.RuntimeException'
我假设,它暗示无法成功调用getInstrumentation().如果是这样,我怎么能创建一个有效的Intent来启动MainActivity?
ActivityUnitTestCase的代码:
public class MainActivityUnitTest extends androID.test.ActivityUnitTestCase<MainActivity> { private MainActivity activity; public MainActivityUnitTest(String name) { super(MainActivity.class); } @OverrIDe protected voID setUp() throws Exception { super.setUp(); } @SmallTest public voID testActivity() { Intent intent = new Intent(getInstrumentation().getTargetContext(), MainActivity.class); startActivity(intent, null, null); activity = getActivity(); assertNotNull(activity); }}
感谢您提供的任何帮助.
解决方法:
问题出在构造函数中的参数“name”中.移除它时,它运行得非常好. 总结
以上是内存溢出为你收集整理的java – 使用ActivityUnitTestCase时的RuntimeException,但不是ActivityInstrumentationTestCase2时的RuntimeExcepti全部内容,希望文章能够帮你解决java – 使用ActivityUnitTestCase时的RuntimeException,但不是ActivityInstrumentationTestCase2时的RuntimeExcepti所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)