问题标签 [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 投票
2 回答
1157 浏览

android - Android FragmentScenario - 找不到包 androidx.fragment.app.testing

尝试在 Android 中使用 FragmentScenario 时出现此错误

这是我的简单单元测试示例:

构建.gradle(应用程序):

我错过了什么,因为几个月前这段代码有效。

0 投票
0 回答
805 浏览

android - Android:模拟片段单元测试的上下文

我有一个在单击按钮时使用委托模式的片段。

我在单元测试中可以看到的一个问题是,当我单击按钮时,因为 IEventDetailsDelegate 字段将为空,所以测试总是会失败。到目前为止,我的单元测试只是测试视图上是否显示了正确的数据:

我想这篇文章有两个问题:

  1. 我可以模拟一个实现 IEventDetailsDelegate 的上下文并将其分配给我的模拟片段吗?
  2. 我应该在实现接口的实际活动上测试事件吗?
0 投票
0 回答
2019 浏览

android - 引起:java.lang.NoSuchMethodError: No static method listOf(Ljava/lang/Object;)Ljava/util/List; 在 Lk/v/i 级;或其超类

kotlin collections library (listOf, first, toList, etc,..在我们的包中使用 ) 方法AndroidTest来运行 UI 测试AndroidJunit4 runner,无论我在哪里引用 kotlin 集合库,我都会遇到这些类型的错误。

奇怪的是我在编译时没有看到任何问题,也没有在课堂级别独立运行测试时看到任何问题。仅当我使用 Gradle 运行整个测试套件时才会出现此问题

这是我使用 Gradle 运行 UI 测试套件的命令

我怀疑在运行时加载的类似乎与编译时不同

这是build.gradle依赖项

0 投票
1 回答
269 浏览

android - 从 Android 测试中获取资源: InstrumentationRegistry.getInstrumentation().getTargetContext() VS myActivityTestRule.getActivity()

我需要从 Android 测试(AndroidJUnit4ClassRunner)中获取资源。推荐的方法是什么,为什么?

或者

完整代码

0 投票
0 回答
68 浏览

android - 如何测试由 Activity 处理的片段导航

我想测试由 MainActivity 处理的片段导航。

为此我创建了HomeFragmentTest课程

运行测试调用按钮单击操作,然后viewModel调用将事件发布到MainActivity. MainActivity 观察到这个事件并调用navControllernavigate 方法

问题是我的测试失败了

0 投票
2 回答
381 浏览

android - Espresso 测试提供:未配置 Koin 上下文。请使用 startKoin 或 koinApplication DSL

我正在运行 espresso uiautomator 测试,该测试在使用 android studio 上的绿色运行 > 按钮时运行良好。(下图)

然而./gradlew connectedAndroidTest给出一个错误:

为什么它可以通过 android studio 运行,但不能在 gradle 上运行?我该如何解决?

在此处输入图像描述

0 投票
1 回答
146 浏览

android - 如何在 kotlin 中使用 ProviderTestRule 测试 ContentProvider

我已经实现了一个 ContentProvider,它使用 Room 数据库来存储数据。该实现是在 kotlin 中完成的,它遵循这个Google 示例中显示的相同模式。ContentProvider 在应用程序中使用时可以正常工作。现在我想写一些测试,我依靠 ProviderTestRule 来做这件事。我的配置看起来不错,但不幸的是我得到了以下异常,看起来缺少一些初始化,然后上下文不可用。

我找不到任何关于如何测试这种情况的示例。任何提示都会非常有帮助!

0 投票
1 回答
206 浏览

java - 通过注解收集 JUnit 测试元数据

有没有我可以在 JUnit 中实现的类/方法,它基本上是一个“钩子”,在每个测试用例完成后运行,用户定义的(在代码中)元数据可用?

我正在尝试完成这样的事情:

  • 使用用户定义的注释来注释测试用例,例如团队所有权(例如@Team(Teams.PAYMENTS)
  • 使用 3 个值将测试结果打印到控制台:测试名称(测试函数名称)、状态(通过/失败)和团队(注释值)

为简单起见,我只需要打印此信息(稍后它将在其他地方发布),但我真的迷失在哪里可以在测试运行后在一个地方获取此测试元数据信息?

我试图在我们的一个TestRunner类中覆盖完成方法:

但是在调试时,这里没有测试元数据。关于如何解决这个问题的任何建议?

谢谢!

0 投票
1 回答
55 浏览

kotlin - 如何将规则应用于 AndroidJUnitRunner 中的所有测试用例?

我正在尝试在由特定跑步者运行的所有测试用例中应用 TestWatcher 作为规则。

元数据收集器:

测试运行者:

我所有的测试类目前都需要MetadataCollector()初始化为规则:

测试类:

有没有办法可以从运行器自动为每个测试用例创建此规则的实例?理想情况下,这是为了避免@Rule在每个单独的测试类中重复这个创建。

不幸的是,我现在被JUnit 4困住了。:(

0 投票
0 回答
20 浏览

sqlite - 防止 AndroidTests 修改数据库

我目前正在使用 SQLiteDatabase 编写应用程序。现在我不确定特别是用于测试的上下文。我创建了一个 MyApplication 类,它从 Application 派生出来,并作为 DbHelper 的上下文,我使用了这个实例,如果我手动测试我的应用程序,它就可以正常工作。

我有一些仪器测试(Junit4 和 Espresso),它们测试数据库本身的一般功能以及应用程序功能。对于此测试,显然必须修改数据库。

我现在的问题是:Espresso/Junit 测试是否有可能不修改我的数据库。我尝试使用事务:

一般工作,但有时,特别是对于 EspressoTests,由于事务内部的读取和写入,我有时会遇到锁定/并发问题。

我也尝试过

作为 DbHelper 的上下文,我在某处读过它,但它无论如何都会更改数据库。我现在被困在这里,期待获得一些如何处理这个问题的提示。

谢谢!