【发布时间】:2014-06-27 11:47:49
【问题描述】:
我很难说服新的 Android 构建系统运行测试。运行测试时会出现Unable to resolve activity for: Intent 错误,该错误已在其他问题中讨论过,但其中没有任何内容可以解决我的问题。
我已将其剥离,以便我的测试包完全不依赖我的主包 (com.wealdtech.app),但在启动活动时仍然存在问题。
我的测试活动:
package com.wealdtech.test;
import android.app.Activity;
import android.os.Bundle;
public class TileLayoutTestActivity extends Activity
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
}
还有我的测试课:
package com.wealdtech.test;
import android.test.ActivityInstrumentationTestCase2;
public class TileLayoutTest extends ActivityInstrumentationTestCase2<TileLayoutTestActivity>
{
public TileLayoutTest()
{
super(TileLayoutTestActivity.class);
}
@Override
protected void setUp() throws Exception
{
super.setUp();
setActivityInitialTouchMode(false);
}
public void testNull()
{
final TileLayoutTestActivity activity = getActivity();
activity.finish();
}
build.gradle 的相关部分:
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
defaultConfig {
minSdkVersion 11
targetSdkVersion 19
testPackageName "com.wealdtech.test"
testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
}
}
我获得的完整堆栈跟踪是:
java.lang.RuntimeException: Could not launch activity
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentation.startActivitySync(GoogleInstrumentation.java:286)
at android.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:119)
at android.test.InstrumentationTestCase.launchActivity(InstrumentationTestCase.java:97)
at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:104)
at com.wealdtech.test.TileLayoutTest.testNull(TileLayoutTest.java:21)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onStart(GoogleInstrumentationTestRunner.java:167)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
Caused by: java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=com.wealdtech.test/.TileLayoutTestActivity }
at android.app.Instrumentation.startActivitySync(Instrumentation.java:379)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentation.access$101(GoogleInstrumentation.java:52)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentation$2.call(GoogleInstrumentation.java:268)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentation$2.call(GoogleInstrumentation.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
我没有包含我的AndroidManifest.xml,因为我读到的所有内容都表明我不需要为TileLayoutTestActivity 添加意图,但是无论如何我都尝试过这样做并最终得到了相同的结果。
我还尝试将 Gradle 插件从 android-library 更改为 android 以防万一导致问题,但结果还是一样。
我没有看到任何关于 Espresso 测试或使用 Gradle 构建系统进行测试的先决条件的文档,我还没有介绍过。关于我无法在测试中开始活动的任何想法?
【问题讨论】:
-
你能找到解决办法吗?在我的项目中遇到同样的问题。
-
有人有解决办法吗?
标签: android android-gradle-plugin android-espresso