问题标签 [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.

0 投票
0 回答
144 浏览

android - 将 android Instrumented 测试 json 文件放在哪里

在 Android Instrumented 测试中,需要从一些 moc json 文件中读取来获取测试用例的 json 数据。

  1. 找到一些建议放在应用程序的资产文件夹中的帖子。moc json 文件会与应用程序的资源一起打包吗?

  2. 并且看到Android工作室有用于创建“Sample Data Directory”(“new > Sample Data directory”)的菜单项,它可以用于Android Instrumented测试的json文件吗?那里的文件会与应用程序的资源一起打包吗?

  3. 或者必须将它们放入 app/src/androidtest/resources (必须手动创建文件夹),然后在 gradle 中执行以下操作:

    sourceSets { test.resources.srcDirs += 'src/androidtest/resources' } 然后:

    javaClass.classLoader.getResourceAsStream("mocJson.txt")

将仪器测试的 json 文件放在某个地方并在测试中读取它们的建议方法是什么,并且该文件不应与应用程序构建一起打包?

0 投票
1 回答
2324 浏览

java - 项目库上的 Android Instrumented 单元测试

我继承了一个由主应用程序和一个库组成的 Android 项目。我的目标是测试整个项目,所以我从库开始:首先我使用 JUnit 测试一些类/方法,编写我的库项目的测试应用程序/src/test/java(单元测试),同时生成一个Android Studio 的代码覆盖率报告。当我找到一个使用 Parcel 的类(来自 Android 框架)时,问题就来了,所以这次我必须在库项目中设置一个检测测试(app/src/androidTest/java)。

当我尝试运行仪器测试并插入 Android 设备时,我收到了以下消息:

我不明白为什么“空测试套件”,而我的测试类中有几个 @Test 方法。我是否必须设置 Gradle 如何在测试期间链接主应用程序和库?也许我必须在主应用程序中移动我的所有测试?!

这是我对图书馆模块的 gradle:

和应用程序的:

感谢关注!

0 投票
0 回答
183 浏览

android - 从代码调用时屏幕记录不起作用

我正在尝试在我的 CI 服务器上获取失败测试的视频。

目标是在每次测试时开始截屏,然后当它失败时将视频保存在某个地方,当它通过时,删除视频。CI 服务器将使用 adb 获取文件。

我正在考虑screenrecord为此目的使用。我认为这很容易,因为这个二进制文件已经存在于设备上,并且在通过 ADB 使用时效果非常好。

这是我以编程方式使用它的方式:打开一个线程,它将启动并跟踪该过程,并在测试开始之前启动它:

我正在等待 5 秒钟,因为screenrecord可能需要一些时间才能启动。

这是实际的screenrecord调用:

在该@After方法中,我检索screenrecord进程的 PID(通过pgrep,它可以工作)并发送它kill -2 $pid,以模拟该进程上的 Ctrl-C,以停止屏幕录制。
不包括此代码,因为它似乎不相关。

这是正在发生的事情:

如您所见,一切看起来都很好,除了只保存了一帧:

编码器停止;在 7 秒内记录 1 帧

该框架是--bugreport结果,带有设备信息(品牌、型号等)。

我能做些什么来捕捉该测试的视频吗?

0 投票
0 回答
282 浏览

android - 是否有一种解决方法来模拟在 Android 的仪器测试期间打开的第二个活动的注入视图模型?

我正在为一个活动编写一个仪器测试,使用ActivityTestRule它将通过按下被测(第一个)活动上的按钮打开第二个活动。

问题是,第二个活动使用依赖注入来注入视图模型工厂以创建其视图模型,但在测试期间,注入被禁用。相反,在直接测试第二个活动时,将包含模拟视图模型的自定义工厂设置为activity.viewModelFactory模拟视图模型行为。但是在上面解释的情况下,第一个活动尝试打开第二个活动并禁用注入并且也没有手动设置工厂,因此测试将失败并出现以下错误:

为了更好地了解场景,这是我尝试运行的测试:

这就是第二个活动访问其视图模型的方式:

考虑到这一点,我想知道是否有一种解决方法来避免打开第二个活动(因为它的行为在这里无关紧要),或者是否有解决方案让包含模拟视图模型的虚拟工厂在测试时用于第二个活动第一个活动(打开第二个活动时如何初始化 viewModelFactory)。

0 投票
2 回答
546 浏览

android - 使用 AndroidX LiveData 和模拟视图模型进行仪器测试时遇到问题

自从将一个项目移植到 Android Jetpack 库(“AndroidX”)后,我就无法让涉及模拟视图模型和 LiveData 操作的仪器化测试正常工作。

我在这里构建了一个显示相同错误的相对简单的应用程序:https ://github.com/Spheniscine/courtcounter/tree/4e9d413f56ccdbded54d72abeba448f281af1a7f

该应用程序本身工作正常,但 MainActivityTest 将失败并出现以下错误:

0 投票
1 回答
96 浏览

android - How create an isolated context in Android for instrumented test

I want to run some test adding and getting accounts using AccountManager but I want to do the operations in a new context without the account I already have in the emulator.

Is it possible to do that?

Example of my class

0 投票
0 回答
147 浏览

android - 仪器测试:找不到依赖项

我正在尝试对我的项目启动一个简单的仪器测试,但是出了点问题。这是我的简单测试类(默认类):

但是当我尝试启动它时,我收到此错误:

这是我在此错误上出现的依赖项的相对应用程序 gradle

其中版本值为:

怎么了?

0 投票
5 回答
25939 浏览

android - 片段不与片段管理器关联

我正在为具有一个活动和多个片段的应用程序使用Navigation Component.

我的启动画面的代码如下:

我正在尝试测试启动屏幕之后出现的片段,但我不断收到以下错误:

我的测试类如下:

由于上述错误,我的任何测试功能都不会执行。由于我在启动画面上运行的测试成功运行,导致异常的原因是什么?

nav_graph的如下:

0 投票
0 回答
25 浏览

android - 在 android 仪器测试中获取 SurfaceTexture

如标题所示,我正在寻找获取或创建 SurfaceTexture 的方法,我可以将其传递给 CaptureSession(在 Camera2 API 中)。是否有机会以编程方式创建虚拟TextureView,然后将其附加到虚拟WindowManager,然后获取Surface,然后将其传递给CaptureSession?或者也许更简单的方法来创建可用的 TextureView?在仪器化测试中。

0 投票
3 回答
964 浏览

android - Android Instrumented 测试断言是否启动了活动

我正在使用 Kotlin 编程语言开发一个 Android 应用程序。我正在将仪器测试添加到我的应用程序中。现在我正在尝试测试是否在延迟一段时间后开始了活动。

这是我的活动代码。

我知道如何编写这样的简单测试

但是我在这里要测试的是 LoginActivity 是否在延迟后启动。我如何使用 Espresso 框架来做到这一点?