6

我有我的 uiautomator 测试用例:

public class clickTest extends UiAutomatorTestCase {   

   public void myTest() throws UiObjectNotFoundException {   
       ...
       //Is it possible to get Context or Activity here?  

   }
}

我想知道,是否有可能获取ContextActivity实例UiAutomatorTestCase

或者怎么PackageManager进去UiAutomatorTestCase

4

5 回答 5

1

在 2021 年,这就是答案:

获取被检测的目标应用程序的上下文。在此处查看详细信息InstrumentationRegistry.getInstrumentation().getTargetContext();

获取仪器包的上下文。在此处查看详细信息InstrumentationRegistry.getInstrumentation().getContext();

于 2021-06-28T01:27:41.387 回答
0

您可以通过直接从 uiautomator 测试用例运行命令来使用 PackageManager:

Runtime.getRuntime().exec("pm uninstall com.example.MyApp");

但是,如果您需要访问上下文、活动等,最好使用 Android 的 InstrumentationTestRunner,查看优秀的 Android 文档以获取更多信息。 http://developer.android.com/tools/testing/activity_test.html

于 2015-03-20T15:11:56.743 回答
0

这可以通过 UiAutomator 2.0 或更高版本实现。

UiAutomator 的原始版本作为 shell 程序 ( adb shell uiautomator runtest ...) 运行。由于它不是作为 Android 应用程序运行的,因此它无权访问应用程序 Context 对象。

UiAutomator 2.0 基于Android Instrumentation。测试被编译为 APK,并在应用程序进程中运行(通过adb shell am instrument ...)。如果您的测试扩展了InstrumentationTestCase,您可以使用它getInstrumentation().getContext()来获取上下文。

有关更多详细信息,请参阅UiAutomator 文档

于 2015-08-01T00:19:53.683 回答
0
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 18)
public class MyTest {

    @Test
    public void test1() {

        Context context = InstrumentationRegistry.getContext();
    }
}
于 2016-04-08T07:07:40.697 回答
0

这个有效 -

InstrumentationRegistry.getInstrumentation().targetContext
于 2019-01-06T11:36:56.853 回答