我有我的uiautomator测试用例:
public class clickTest extends UiAutomatorTestCase {
public void myTest() throws UiObjectNotFoundException {
...
//Is it possible to get Context or Activity here?
}
}
我想知道,是否可以在Context
中获得Activity
或UiAutomatorTestCase
个实例?
或如何在PackageManager
中获取UiAutomatorTestCase
?
答案 0 :(得分:0)
您可以直接从uiautomator测试用例运行命令来使用PackageManager:
Runtime.getRuntime().exec("pm uninstall com.example.MyApp");
但是,如果您需要访问上下文,Activity等,最好使用Android的InstrumentationTestRunner,查看优秀的Android文档以获取更多信息。 http://developer.android.com/tools/testing/activity_test.html
答案 1 :(得分: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 docs。
答案 2 :(得分:0)
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 18)
public class MyTest {
@Test
public void test1() {
Context context = InstrumentationRegistry.getContext();
}
}
答案 3 :(得分:0)
此作品有效-
InstrumentationRegistry.getInstrumentation().targetContext
答案 4 :(得分:0)
2021 年的答案是:
获取正在检测的目标应用程序的上下文。 See details here:
InstrumentationRegistry.getInstrumentation().getTargetContext();
获取仪器包的上下文。 See details here:
InstrumentationRegistry.getInstrumentation().getContext();