问题标签 [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 回答
483 浏览

android - 使用 ActivityRules 对 onSaveInstanceState 进行单元测试

我试图弄清楚如何使用较新的 AndroidJunit4 和活动规则测试 onSavedInstance。

我收到一个错误,不确定我是否在吠叫正确的树。

java.lang.IllegalStateException: 必须从 android.app.Activity.recreate(Activity.java:4620) 的主线程调用

0 投票
1 回答
47 浏览

android - 模拟演示者导致集成测试转储

最近我开始用集成测试覆盖我的项目,其中 mockito 提供演示者实例来验证我的视图是否在其事件期间正确调用演示者方法。

问题出在具有不可见ProgressBarRecyclerView. 该屏幕的演示者一直在为此加载数据RecyclerView并控制ProgressBar. 当我用 mock(使用 Mockito)替换它时,它会导致相应的测试在一段时间后完全陷入错误:

但活动已成功运行,并且可供所有用户事件(如点击等)访问。

你怎么看,是什么导致了问题?

这只是社区知识库的问题,我自己找到了答案

0 投票
1 回答
1227 浏览

android-instrumentation - AndroidJUnitRunner + ActivityInstrumentationTestCase2 超时?

设置:

我继承的一个较旧的项目有很多遗留的仪器测试,我想对它们施加超时,因为它们中的很多可以无限期地挂起,这使得很难获得测试报告。我正在将测试更新为 Junit4 样式,但目前它们都在扩展 ActivityInstrumentationTestCase2。

到目前为止尝试过:

AndroidJUnitRunner的文档中,它说要设置这个标志:

设置将应用于每个测试的超时(以毫秒为单位):-e timeout_msec 5000 ...

...所有参数也可以通过元数据标记在 AndroidManifest 中指定

我尝试将 AndroidJUnitRunner 配置添加到应用程序清单和测试清单中,但 timeout_msec 元数据项到目前为止没有任何效果。

0 投票
1 回答
295 浏览

android - Android JUnit 参数是字符串“null”而不是 `null`

我正在尝试在参数集中使用 null 运行一些新的参数化 Android 测试。不幸的是,这些值显示为字符串“null”而不是null. 我怎样才能防止这种情况发生?

0 投票
0 回答
304 浏览

android - 使用 AndroidJUnit4 模拟客户经理

我有一个 Activity 调用AccountManager.get(this)给我一个 AccountManager 的实例来调用getAuthTokenByFeatures()

我想测试此活动并模拟客户经理可以给我的不同响应。

使用 AndroidJUnit4 测试,如何打破这种依赖关系并将模拟帐户管理器注入我的活动?

我找到了这个答案,它介绍了如何创建 ContextWrapper 来更改getSystemService()实现。但是,答案使用已弃用的 ActivityUnitTestCase。有没有办法通过 AndroidJUnit4 测试来做到这一点?

正在测试的活动:

0 投票
0 回答
90 浏览

android - 执行 SyncAdapter 的仪器测试

如何测试 SyncAdapter?我说的是验证onPerformSync使用正确参数调用的测试方法extras以及它是否按预期响应等。该平台似乎为 ContentProvider、Activity 等提供了工具类。但是我如何编写工具测试我的 SyncAdapter ?

0 投票
2 回答
1968 浏览

android - 无法运行浓缩咖啡测试

我正在使用Espresso运行 android UI 测试,在包含所有必需的依赖项并创建所需的类测试之后,运行它时给我错误:

并且肯定它是一个内置类,所以我不必更改它,即使我尝试创建一个自定义类,但这导致我遇到其他问题,除非删除我添加的额外构造函数,否则这些问题将无法解决自定义类,最终导致我遇到同样的问题。

我的测试课:

依赖项:


ps如果有可用的测试 api,我已经准备好使用另一个测试 api,但我搜索并一无所获。

0 投票
0 回答
64 浏览

android - 当我尝试在 Android 中登录仪表化单元测试时,日志在哪里?

我已按照此文档创建了一个仪表测试单元类:https ://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html#run

但是当我尝试使用日志或 System.out.println 作为我的测试方法的一部分时,没有任何日志出现在任何地方。

0 投票
0 回答
97 浏览

java - Android & AndroidJUnit4。如何处理和测试不确定的生命周期循环错误

与无限循环的视图事件相关的错误是这个问题的主题。这样的循环不会 throw StackOverflowError,因为执行得非常频繁,但不是递归的。该代码错误的一个示例可以在自定义视图invalidate()内调用。onDraw

默认情况下, AndroidJUnit4在启动测试活动后等待应用空闲,然后执行验证。但是在无限生命周期循环的情况下,将无法实现空闲并且测试将失败并出现错误java.lang.RuntimeException: Could not launch intent Intent within 45 seconds. Perhaps the main thread has not gone idle within a reasonable amount of time? 这样的错误不是那么声明性的,测试必须等待很长时间。

例如,我应该测试onLayoutChildren方法LayoutManager。默认情况下,如果正确实施,此方法会在启动后执行两到三次,仅此而已。而且这个测试通过了 verify(spy, atMost(3)).onLayoutChildren(any(RecyclerView.Recycler.class), any(RecyclerView.State.class)),哪里spy来的间谍LayoutManager。行为可能被破坏并onLayoutChildren进入无限循环。如果在测试中出现错误,它会卡住。

我想要达到的目标。可能的变体是运行测试和应用程序一段时间(如 500 毫秒左右),然后中断应用程序并在此之后执行验证。没有任何连接到空闲

0 投票
1 回答
278 浏览

android - 即使指定了类,connectedAndroidTest 任务也会运行所有测试

我正在尝试使用 connectedAndroidTest 运行检测单元测试。起初我只是想使用 cAT 跑到特定的班级。所以我尝试了下面的命令

./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.company.test.data.model.TestClassName

但它运行所有测试,包括编写的机器人和浓缩咖啡测试。我浏览了很多 StackOverFlow 帖子,在所有帖子中,答案都是上面指定的命令。

当我尝试 adb shell am instrument -e class com.company.test.data.model.TestClassName com.company.test/android.support.test.runner.AndroidJUnitRunner

它按预期运行了测试。问题是我不会通过 adb 命令获取 jUnit 报告,但 cAT 会根据需要为我提供测试报告和代码覆盖率报告。

有没有人有这个问题的解决方案来运行特定的测试?