问题标签 [androidjunitrunner]

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 回答
263 浏览

android - AndroidJUnit4ClassRunner 抛出 RuntimeException Android

我正在开发一个 Android 应用程序。我正在为 android 编写 Junit 测试,我是 Junit 测试用例的新手。

在应用程序内我有一个相对布局,点击我打开日期选择器对话框,一旦用户选择我在 TextView 中显示的日期。

我想用 Junit 测试这些操作。当我尝试运行测试用例时,它会抛出以下错误:

这是我的测试课:

我也试过这些代码在里面运行,runOnUiTHeard()但问题仍然存在。

我也试过这些代码在里面运行,Handler()但测试将继续运行,不显示任何输出

我错过了什么吗?

0 投票
0 回答
510 浏览

android - jUnit4 - 为什么测试可挂起函数失败并出现“RuntimeException:... AndroidJUnit4 无法加载”?

当我测试一个用 编写的简单 db 时Room,当 dao 函数用suspend. 错误是:

我的实体是:

如您所见,我想防止数据库存储User相同的user_name内容。

我的道课是:

我的测试是:

那时,所有测试都按预期成功

当我将 dao 类更改为使用suspend函数时会出现问题:

我将测试更改如下:

现在测试可暂停功能失败!

ARuntimeException提出:

我发现错误来自 test insertSameUser,如果我insertSameUser按照以下方式更改,则不再有错误:

如果我按照此处@RunWith(AndroidJUnit4::class)的建议删除, 则测试失败并显示. 如果我再次添加上面的虚拟测试,那么测试就可以工作了。java.lang.Exception: Method insertSameUser() should be void

有人有想法吗?

依赖项是:

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 回答
522 浏览

android - 如何在命令行中使用 Android Test Orchestrator?

从 CI 运行测试时看到崩溃。阅读这篇关于使用 Android Test Orchestrator 的文章 ( https://developer.android.com/training/testing/junit-runner#ato-gradle )。我正在使用 adb 从 CI 运行我的测试。想知道如何安装 Orchestrator。命令行中的apk?

0 投票
0 回答
239 浏览

android - 使用 Orchestrator 时在 Android 中使用 Jacoco 的代码覆盖率

我正在尝试从需要与 Android Test Orchestrator 一起运行的测试套件中获取覆盖率报告。

有一个固定问题引用了另一个固定问题

按照他们的建议,我添加了

但我仍然得到

我认为它可能与测试发行说明存档页面中的这一行有关

如果同时传递了“coverage”和“coverageFilePath”参数,则仅启用协调器覆盖处理。

我试过添加

这没有什么区别,我找不到任何关于实际应该通过什么的信息。

你知道我错过了什么吗?

一个工作示例的链接也非常好。

0 投票
1 回答
269 浏览

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

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

或者

完整代码

0 投票
1 回答
178 浏览

android - 测试在 TestLab 中失败,但在从 gradle 传递来自 runner 的参数并在我的 androidTest 中使用它们时传入本地

我通过 gradle 从 runner 传递参数并在我的 androidTest 中使用它们。

''' 例如:

该测试在本地运行,但是在 Firebase TestLab 中运行时,我得到一个空指针异常并且当我尝试使用 key=FOO 访问参数时测试失败。你能帮我解决这个问题吗?

我不想使用 CLI。如果有办法我可以使用 android studio 和 firebase testlab web UI 做到这一点,请告诉我。

0 投票
1 回答
55 浏览

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

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

元数据收集器:

测试运行者:

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

测试类:

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

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

0 投票
2 回答
329 浏览

java - 生成的Android espresso 测试运行失败,AndroidJUnitRunner 解析失败:Landroidx/test/platform/io/FileTestStorage;

在我的应用程序上录制了一个简单的浓缩咖啡测试后,测试无法运行,我希望有人能指导我了解为什么会发生这种情况。产生的错误是:

我正在使用的 Build.gradle 看起来像:

Espresso java 文件(有一些我试过的注释掉的东西):

0 投票
0 回答
19 浏览

android - 安卓。是否可以编写参数化的仪器测试

我正在尝试编写一个参数化的仪器测试。这是我的代码:

但是当我运行我的测试时,我收到以下错误:

org.junit.runners.model.InvalidTestClassError: 无效的测试类 'com. . . . ****.TempTest':

  1. 在 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':

  1. 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文件夹中编写参数化测试时出现问题。请帮我。