问题标签 [android-junit]

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.

0 投票
1 回答
2489 浏览

android - 使用 UiAutomator 获取其他应用程序的 Activity 实例?

我正在我的应用程序中使用 UiAutomator 跨应用程序编写一些自动化测试用例。我的目标是找到我点击的所有应用程序的当前活动。

我有一个名为MyApp的项目,其中包含一个名为com.example的包,其中包含一个活动MainActivity

我尝试了以下(androidTest下我的应用程序中的所有内容)

在这里,我单击HomeMenu并启动Myapp并使用com.example.MyActivity附加到监视器,我可以在这行代码中获取活动实例

活动 currentActivity = instrumentation.waitForMonitorWithTimeout(monitor, 3000);

现在如果我改变流程。HomeMenu --> SomeOtherApp并使用 SomeOtherApp 的完全限定的launcherActivity 连接到监视器说com.someotherapp.MainActivity。我无法获取活动实例。当前活动为空

有没有办法可以获取我通过 UiAutomator 启动的任何应用程序的当前 Activity 实例?

0 投票
1 回答
400 浏览

android - Firebase 测试实验室检测测试错误:NoClassDefFoundError

我正在尝试使用 Firebase 测试实验室来运行检测测试。

当我使用 android studio 运行本地仪器测试时,一切都很顺利。

当我将 APK(app-debug.apk 和 app-debug-androidTest.apk)上传到 Firebase 测试实验室并运行检测测试时,出现以下错误:

你知道什么会导致这个错误吗?

0 投票
1 回答
595 浏览

java - 未绑定服务的 ServiceTestRule#startService 超时

我正面临这个问题,基本上 ServiceTestRule 在未绑定服务中调用 startService 时会引发 TimeoutException,并且想知道在发布修复程序之前是否有人知道可能的解决方法?

未绑定的服务类:

测试类:

0 投票
2 回答
8129 浏览

android - 如何单元测试(使用 JUnit 或 mockito)recyclerview 项目点击

我目前正在尝试使用 junit 或 mockito 对 recyclerview addonitemclick 列表器进行单元测试。这是我的代码:

有没有办法可以进行单元测试:addOnItemTouchListener 或 OnItemClickListener/onitemclick,模拟功能等。我对单元测试很陌生,并且一直在网上查找一些教程并且很困惑。任何用于测试功能的分步教程或任何建议都会有所帮助。此外,此功能中任何其他可能的单元可测试场景都会有所帮助。谢谢!

0 投票
3 回答
3242 浏览

java - 使用检测和 JUnit4 测试重新创建 Android Activity

我想为重新创建活动编写测试。执行旋转是可选的。

我希望测试用谷歌“祝福”的最新版本的测试框架编写。我是编写测试的新手,所以我想学习基本的、主流的、支持良好的工具。当我掌握基础知识时,任何第三方测试框架都可以。既然我想测试非常基本的、经常发生的场景,基本的工具就足够了,对吧?

最小测试代码:

和测试类:

上面的代码(方法1或2)给出了logcat:

我的诊断,如果我错了,请纠正我:

  1. activity1.setRequestedOrientation 导致在其他线程中创建新活动。我希望它会收到适当的捆绑
  2. getInstrumentation().waitForIdleSync(); 导致测试等到新活动被创建
  3. mActivityTestRule.getActivity(); 仍然返回旧的活动实例。
  4. 我需要一些方法来刷新测试规则中保存的活动实例,释放以前保存的一个。

我找到了旧版本测试框架的答案:Android 仪器测试 - 如何在方向更改后接收新活动?

但我不知道如何将其翻译成新版本。

编辑:

以上两种方法都使活动处于破坏状态: assertFalse(mActivityTestRule.getActivity().isDestroyed()); 失败。

我找到了另一种方法(Destroy and restart Activity with Testing Support Library),它重新创建活动实例,但不通过 onSaveInstanceState 保持其状态

0 投票
1 回答
205 浏览

android - 使用 AndroidJunitRunner 和 Dagger2 模拟依赖错误

我正在尝试像https://artemzin.com/blog/how-to-mock-dependencies-in-unit-integration-and-functional-tests-dagger-robolectric-instrumentation/中建议的那样模拟依赖项

不幸的是,当我运行我的 AndroidJunit4 测试时,我无法克服以下错误:

测试运行失败:找不到仪器信息:ComponentInfo{com.fisincorporated.aviationweather.test/android.support.test.runner.AndroidJUnitRunner}

我尝试了各种不依赖于 Android Studio 版本的 SO 解决方案,但没有运气

我的应用级 gradle 代码片段是:

我的 OverrideApplicationTestRunner 是:

WeatherApplicationTest

和 AirportWeatherActivityTest

androidTest 目录结构如下:

在此处输入图像描述

我发现如果我运行以下测试,它就可以工作,即我看到 WeatherApplicationTest 正在执行。所以似乎 testInstrumentationRunner 正在寻找我的 OverrideApplicationTestRunner。

那么问题是由使用 ActivityTestRule 引起的吗?

PS我忘了说我是测试新手,所以如果我遗漏了一些明显的东西,我深表歉意。

0 投票
2 回答
1896 浏览

android - Android 问题与 AndroidJUnitRunner 给出'java.lang.ClassNotFoundException'

我是仪器测试的新手。我正在尝试使用 AndroidJUnitRunner 进行基本测试。这是我的毕业典礼:

然后我添加了一个名为“ProductListActivityTest”的类来使用 AndroidJunitRunner 进行测试。它在下面:

我没有在“androidTest”中添加其他文件。我还想提一下,我的源代码中有 Application 类文件。现在每次我尝试运行测试时,都会出现以下错误:

谁能帮我找出我的测试代码中的问题?

0 投票
1 回答
1426 浏览

java - Android RecyclerView Adapter 在单元测试中给出 null

我正在尝试使用 AndroidJunit4 测试 RecyclerView,这是我的测试代码:

我在检查适配器时遇到问题。虽然 productRecyclerView 正在通过非空测试和 RecyclerView 实例,但它在最后一行出现以下错误:

代码中的问题是什么?

0 投票
2 回答
1214 浏览

android - Android RecyclerView 适配器项目计数在单元测试中返回 0

我正在尝试使用 AndroidJunit4 测试 RecyclerView,这是我的测试代码:

这是我在 Activity 中的 displayProducts() 代码:

它给出的错误如下:

请帮助我的代码有什么问题?

0 投票
3 回答
1093 浏览

android - 使用 Espresso 2.2.2 的 ImmersiveModeConfirmation

由于沉浸式模式确认弹出窗口(此处显示: https ://developer.android.com/training/system-ui/immersive.html) ,谷歌云测试服务器上的某些虚拟设备似乎无法正确执行测试- 是否存在一种用 Espresso 自动关闭弹出窗口的方法?基本上我的代码可以在本地模拟器中运行,但不能在 Google 云服务器上运行。这就是失败的原因: