2
我一直在與Android單元測試一起插入,並遇到了似乎是路徑問題。Android單元測試包路徑錯誤
首先我在我的項目目錄
android create test-project -m ../ -p tests -n RoamPayTests
這將創建一個測試項目,並初始化它內運行從我的這個命令。自動生成的ActivityInstrumentaionTestCase2工作正常。 我可以在這裏創建測試,一切正常。
注意:請注意,主要活動在ui包中。
package com.roamdata.roampayx;
import com.roamdata.roampayx.ui.SplashActivity;
import android.test.ActivityInstrumentationTestCase2;
/**
* This is a simple framework for a test of an Application. See
* {@link android.test.ApplicationTestCase ApplicationTestCase} for more information on
* how to write and extend Application tests.
* <p/>
* To run this test, you can type:
* adb shell am instrument -w \
* -e class com.roamdata.roampayx.ui.SplashActivityTest \
* com.roamdata.roampayx.tests/android.test.InstrumentationTestRunner
*/
public class SplashActivityTest extends ActivityInstrumentationTestCase2<SplashActivity> {
public SplashActivityTest() {
super("com.roamdata.roampayx", SplashActivity.class);
}
這裏產生Android_Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.roamdata.roampayx.tests"
android:versionCode="1"
android:versionName="1.0">
<!-- We add an application tag here just so that we can indicate that
this package needs to link against the android.test library,
which is needed when building test cases. -->
<application>
<uses-library android:name="android.test.runner" />
</application>
<!--
This declares that this application uses the instrumentation test runner targeting
the package of com.roamdata.roampayx. To run the tests use the command:
"adb shell am instrument -w com.roamdata.roampayx.tests/android.test.InstrumentationTestRunner"
-->
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.roamdata.roampayx"
android:label="Tests for com.roamdata.roampayx"/>
</manifest>
汽車的問題是,當我嘗試創建一個新的測試用例。
package com.roamdata.roampayx;
import com.roamdata.roampayx.provider.RoamPay;
import com.roamdata.roampayx.provider.RoamPayProvider;
import android.test.ProviderTestCase2;
public class ProviderTest extends ProviderTestCase2<RoamPayProvider> {
public ProviderTest() {
super(RoamPayProvider.class, RoamPay.AUTHORITY);
}
}
接下來我建立並安裝,(這裏沒有問題)。但後來我跑
adb shell am instrument -w com.roamdata.roampayx.tests/android.test.InstrumentationTestRunner
,最後我得到以下錯誤
android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests:
Error in testSuiteConstructionFailed:
java.lang.RuntimeException: Exception during suite construction
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:238)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
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:262)
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:184)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:379)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4142)
at android.app.ActivityThread.access$1300(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com.roamdata.roampayx.provider.RoamPayProvider
at ProviderTest.<init>(ProviderTest.java:9)
... 18 more
我有進口RoamPay和RoamPayProvider。 智能感知正在工作,我得到這些參考。
任何想法?
爲什麼在這裏包含必需的包名? – 2014-06-23 22:08:46