无法解决以下活动:在检测Android活动的仪器时意图

当我试图在android上运行insturmentation测试时,我遇到了错误。 我写了一个名为AudioPlayerActivity的Activity,它位于com.mycompany.mobile.android.gui包中,现在我正在尝试测试该项目的GUI,并且我正在运行以下错误:

java.lang.RuntimeException:无法解析以下活动:Intent {act = android.intent.action.MAIN flg = 0x10000000 cmp = com.mycompany.mobile.android.gui / .AudioPlayerActivity}

我已经阅读了这个问题 ,并遵循了那里的建议,但无济于事。 我也搜索了错误,但没有找到任何帮助。

这是我测试项目的AndroidManifest.xml的样子:

          

这是我的仪器测试。

包com.mycompany.mobile.android.gui;

 import android.test.ActivityInstrumentationTestCase2; import com.mycompany.mobile.android.gui.AudioPlayerActivity; public class TestMusicPlayerActivityTest extends ActivityInstrumentationTestCase2 { public TestMusicPlayerActivityTest() { super("com.mycompany.mobile.android.gui", AudioPlayerActivity.class); } public TestMusicPlayerActivityTest(String name) { super("com.mycompany.mobile.android.gui", AudioPlayerActivity.class); } public TestMusicPlayerActivityTest(String pkg, Class activityClass) { super("com.mycompany.mobile.android.gui", AudioPlayerActivity.class); } public void testSomething() { System.out.println("Nothing works :("); System.out.println(getActivity()); } } 

我们通过maven运行整个过程,但这不应该成为问题的一部分。

如您所见,测试的Activity也位于同一个包中。 我没有使用活动而不是包名称来调用超级构造函数,因为大多数人都遇到此问题。

为了您的兴趣,这是描述测试活动的AndroidManifest.xml:

         

我还将活动添加到AndroidManifest.xml,但这并没有改变任何东西。 我还尝试为所需的活动添加MAIN / LAUNCHER意图filter,但是这并没有改变测试的结果。 我尝试用额外的东西开始活动,没有它们,这也没有改变结果。

   

您是否在Android项目和Android测试项目中使用相同的软件包名称? 这可能是一个问题,但我不确定它是否会导致您的java.lang.RuntimeException。

根据此处的官方开发指南,您的测试项目必须与您测试的项目具有不同的包名称:

Android程序包名称是.apk文件的唯一系统名称,由程序包清单中元素的“android:package”属性设置。 测试包的Android包名称必须与要测试的应用程序的Android包名称不同。 默认情况下,Android工具通过将“.test”附加到被测应用程序的包名称来创建测试包名称。

尝试将包名称com.mycompany.mobile.android.gui.test用于测试项目。

您将其作为Android项目运行,尝试将其作为Android测试项目运行

adb shell am instrument -e package -w /android.test.InstrumentationTestRunner