问题标签 [instrumented-test]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在 Android 中使用单元测试或仪器测试来测试警报管理器
我在测试警报管理器上设置的警报时遇到了问题。我想使用单元测试或仪器测试来检查警报管理器。
android-studio - 未找到适用于 Android 检测单元测试的测试
我正在运行一个 @SmallTest 类作为我的 Android Studio 应用程序的检测测试。然后单元测试工作得很好,但仪器测试似乎没有被识别。 这是一个图像演示
它表明该类中有 0 个测试,并且通过了 0 个测试。我在测试功能之前确实有@Test,并且模块使用AndroidJUnit4。这可能是什么问题?
android - Android:如何使用模拟位置进行仪器测试?
对于位置服务的仪器测试,我需要模拟位置。但目前来自 Android 的概念似乎不太实用。
为了被允许使用模拟位置, test-package 还需要权限android.permission.ACCESS_MOCK_LOCATION
。当添加到调试清单时,我得到提示,此权限将仅授予系统应用程序。我必须添加tools:ignore="ProtectedPermissions"
禁止此警告的权限。恕我直言,对此类测试所必需的属性发出此类警告是没有意义的。
然后我需要选择这个测试包作为测试设备的模拟位置提供程序。可接受手动测试。但是,我真的必须为要测试代码的每个设备手动选择此设置吗?(在测试设备场上的这个 firebase-test 怎么样?我无法进行此设置。)
如果我有多个测试模拟位置的应用程序怎么办?目前我无法在同一设备上测试这两个包。
还是我错过了什么?
android - context.startActivity 不适用于 UiAutomator 中的单个应用程序
我正在尝试使用 UiAutomator 使用以下代码启动第 3 方应用程序:
Intent 没问题,它适用于例如 Google Play,但不适用于我要启动的另一个应用程序(我不能透露)。
甚至更多,adb shell am start -n package/Class
工作,但Runtime.getRuntime().exec("am start -n package/Class")
报告,Starting: Intent ...
但从测试运行时它不会出现在屏幕上。
如果我在运行测试时使用adb shell启动活动,它也可以正常启动。
我认为这个应用程序以某种方式检测到它是从仪器测试启动的。是否可以隐藏我从测试中启动它的事实?
java - 如何在 WebView 中测试 KeyListener?
我设置了一个webview.setOnKeyListener
,以便我的 WebView 可以在用户单击后退按钮时返回到上一页。
此 WebView 存在于 Fragment 上,在手动使用应用程序时,它在模拟器和真实手机上都能很好地工作。
我面临的问题是我不知道如何在仪器测试中模拟这种行为。
我尝试过的所有代码都会关闭我的 Fragment 而不是将 WebView 发送到上一页。
我觉得“按回”操作正在应用于 Activity 而不是我的 WebView?
至少日志显示在 WebView 中设置的关键侦听器没有捕获任何内容。
任何帮助/想法将不胜感激!
一些上下文:
我的测试正在运行@RunWith(AndroidJUnit4.class)
。
我用初始化活动
并设置一些代码以在 WebView 中单击以确保它具有返回上一页的历史记录。(与我在模拟器或真实手机上使用它的流程相同,因此它应该可以工作)
我尝试了多种方法来模拟“按下后退按钮”动作,但它们都无法实现我的目标。
我试过的代码:
Espresso.pressBack();
Espresso.pressBackUnconditionally();
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); mDevice.pressBack();
KeyEvent kdown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK); activityRule.getScenario().onActivity(activity -> {activity.onKeyDown(KeyEvent.KEYCODE_BACK, kdown);});
我用
KeyEvent.ACTION_UP
在我的setOnKeyListener
所以我稍微修改了前一个。
KeyEvent kdown = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK); activityRule.getScenario().onActivity(activity -> {activity.onKeyUp(KeyEvent.KEYCODE_BACK, kdown);});
onWebView().withElement(findElement(Locator.ID,"a_random_element")).perform(webKeys("javascript:keyUp(" + KeyEvent.KEYCODE_BACK + ")"));
onView(isRoot()).perform(ViewActions.pressBack());
onView(isRoot()).perform(pressKey(KeyEvent.KEYCODE_BACK));
onView(withTagValue(is("myWebView"))).perform(pressBack());
onView(withTagValue(is("myWebView"))).perform(pressKey(KeyEvent.KEYCODE_BACK));
getInstrumentation().sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
找不到
activityRule.runOnUiThread()
(好像找不到这个方法)Instrumentation inst = new Instrumentation(); inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
android - 安卓。如何使用多个资产调用编写参数化测试
我有一个返回 SpannableString 的方法。我需要为此方法编写仪器测试。在测试内部,我解析 SpannableString 并检查跨度计数、跨度开始、跨度结束等。这是我的测试示例:
但是,我需要测试更多的输入数据。我想写一个参数化测试,但我的测试中有几个 assertEquals 调用,所以我不明白如何将其转换为参数化测试。也许有一种更优雅的方法可以通过许多 assertEquals 调用为大量输入编写测试。请帮我。
android-espresso - DataBindingIdlingResource 是否包括绑定适配器的执行?
我知道如果没有挂起的绑定,DataBindingIdlingResource 将跟踪应用程序是否空闲。
在这种情况下,Espresso 将继续测试。但是绑定适配器是否也被视为绑定?
java - 使用动态模块从终端运行连接测试(动态模块不包含在测试中)
我正在尝试从终端运行已连接的检测测试,但由于动态模块未包含在目标 apk 中,因此某些测试失败。当我从 Android Studio 运行这些测试时,测试就成功了。
我正在使用以下任务
是否还有其他一些任务/标志/流程也包括动态模块?
android - 安卓。是否可以编写参数化的仪器测试
我正在尝试编写一个参数化的仪器测试。这是我的代码:
但是当我运行我的测试时,我收到以下错误:
org.junit.runners.model.InvalidTestClassError: 无效的测试类 'com. . . . ****.TempTest':
- 在 org.junit.runners.ParentRunner.(ParentRunner.java:92) 在 org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java: 74) 在 androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner.(AndroidJUnit4ClassRunner.java:43) 在 androidx.test.internal.runner.junit4.AndroidJUnit4Builder.runnerForClass(AndroidJUnit4Builder.java:65) 在 org.junit.runners。 model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37) at androidx.test.internal.runner.AndroidRunnerBuilder.runnerForClass(AndroidRunnerBuilder.java:153)在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 在 androidx.test.internal.runner.TestLoader。doCreateRunner(TestLoader.java:73) 在 androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:105) 在 androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:804) 在 androidx.test .runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:613) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074) 在 androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:411)Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)
我试图找到解决这个问题的方法。作为搜索的结果,我尝试@RunWith(Parameterized::class)
为我的TempTest
班级添加注释。@Parameterized.Parameters
我还为带有参数的方法添加了注释 testFormatTrimPercentValueArguments()
:
但是,当我运行测试时出现以下错误:
org.junit.runners.model.InvalidTestClassError: 无效的测试类 'com. . . . ****.TempTest':
- org.junit.runners.ParentRunner.(ParentRunner.java:102) 的 org.junit.runners.ParentRunner.validate(ParentRunner.java:525) 没有可运行的方法。 84) 在 org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParametersFactory.createRunnerForTestWithParameters(BlockJUnit4ClassRunnerWithParametersFactory.java:16) 在 org.junit.runners.Parameterized$RunnersFactory 的 org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters.(BlockJUnit4ClassRunnerWithParameters.java:35)。 createRunnersForParameters(Parameterized.java:463) at org.junit.runners.Parameterized$RunnersFactory.createRunners(Parameterized.java:392) at org.junit.runners.Parameterized$RunnersFactory.access$100(Parameterized.java:360) at org. junit.runners.Parameterized.(Parameterized.java:307) 在 org.junit。runners.Parameterized.(Parameterized.java:303) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:334) at org.junit.internal.builders .AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 在 org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 在 androidx.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:63 ) 在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 在 org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37) 在 androidx.test.internal.runner.AndroidRunnerBuilder。 runnerForClass(AndroidRunnerBuilder.java:153) 在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 在 androidx.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:73) 在 androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:105) 在 androidx.test.internal.runner.TestRequestBuilder .build(TestRequestBuilder.java:804) 在 androidx.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:613) 在 androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:411) 在 android.app.Instrumentation$ InstrumentationThread.run(Instrumentation.java:2074)AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:411) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:411) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)
请告诉我我做错了什么。可能无法编写参数化的仪器测试,因为当我编写本地参数化测试时没有这样的问题。当我在androidTest
文件夹中编写参数化测试时出现问题。请帮我。
android - 尝试使用 Android Compose 和 Hilt 设置检测测试时出现 ComponentActivity ClassNotFoundException
我正在设置我的第一个仪器化单元测试,并在 logcat 中遇到了一个不起眼的崩溃。
模拟器启动并在应用程序尝试打开时立即崩溃,并且单元测试甚至没有运行,因为应用程序没有处于正确的状态。
它似乎正在寻找在以下 gradle 依赖项中定义的 androidx.activity.ComponentActivity:
implementation 'androidx.activity:activity-compose:1.3.1'
不知道在哪里看,这是我的第一个测试和我在 git 中的项目: https ://github.com/davida5/ComposeNotepad/blob/main/app/src/androidTest/java/com/anotherday/day17/navigation/NavigatorTest .kt