FragmentActivity Junit的测试 [英] FragmentActivity Junit Testing

查看:208
本文介绍了FragmentActivity Junit的测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用片段 Android的兼容包,使用 Android的支持 - v4.jar 。但我不能做这样的JUnit测试。

Me used Fragment of Android Compatibility Package, using the android-support-v4.jar. But I can't do the JUnit test on this.

我的主 FragmentActivity 类被声明如下:

public class MyActivityClass extends FragmentActivity{
...............
}

然后在我的测试项目

Then in my test project

public class MyActivityClassTest extends ActivityInstrumentationTestCase2<MyActivityClass> {
    public MyActivityClassTest() {  
        super("com.android.myproject", MyActivityClass.class);
    }
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        ...................
    }

    public void testPreconditions() {
        .................
    }
    public void testNotNull(){
        ................
    }
}

但是当我运行的 Android的JUnit测试制作 FailedToCreateTests [亚军:Junit3]
故障跟踪

But when I run as Android JUnit Test produce FailedToCreateTests[Runner:Junit3]
Failure Trace

java.lang.RuntimeException: Exception during suite construction
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:239)
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:430)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
Caused by: java.lang.reflect.InvocationTargetException
at com.android.myproject.test.MyActivityClassTest.<init>(MyActivityClassTest.java:28)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:87)
at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73)
at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:263)
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:185)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:336)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3982)
at android.app.ActivityThread.access$2900(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1901)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com.android.myproject.MyActivityClass
... 19 more

当我改变了 MyActivityClass 来扩展活动它能正常工作(MyActivityClass延伸活动
我用同样的 Android的支持 - v4.jar 在我的测试和主体工程

When I changed MyActivityClass to extends Activity it worked fine (MyActivityClass extends Activity)
Me used the same android-support-v4.jar in my both test and main project

推荐答案

我找到了解决办法

问题是

Caused by: java.lang.NoClassDefFoundError: com.android.myproject.MyActivityClass

它找不到类路径,即使我是指同一个jar在两个项目(我也尝试过使用单独的JAR两个项目)

It cannot find the class path even though I refer the same jar in both projects ( I also tried by using separate jar for both the project )

现在,我创造了我的测试环境在同一个项目,然后它的工作

Now, I created my testing environment in the same project, then it worked

在我的的Andr​​oidManifest.xml

<manifest...>
    <!-- For doing JUnit test, Instrumentation Start (remove later) -->
    <instrumentation
        android:targetPackage="com.pe.android.isccasinos"
        android:name="android.test.InstrumentationTestRunner" />
    <!-- For doing JUnit test, Instrumentation End (remove later) -->   
    <application ...>
    ................
    <!-- For doing JUnit test, add library starting (remove later) -->
        <uses-library
            android:name="android.test.runner" />
        <!-- For doing JUnit test, add library ending (remove later) -->
    </application>
<manifest>

然后我说我的测试类在我的特殊包测试

Then I added my Testing class in my special package for testing

extends ActivityInstrumentationTestCase2<fragmentActivity>

现在一切正常:)

这篇关于FragmentActivity Junit的测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆