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

android - 需要但未调用:实际上,与此模拟的交互为零。(Android 视图模型)

我知道对于同一个问题有多个类似的问题,但似乎没有帮助我最终可能遗漏了一些东西。

我有一个调用 api 的视图模型,我正在尝试为我的视图模型方法编写 Junit,但出现以下错误

ProfileViewModel.kt

ProfileViewModelTest.kt

我觉得这是为 viewmodel 实现 junit 的正确方法,但不确定是否在这里遗漏了什么。非常感谢任何建议或帮助。

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

0 投票
1 回答
75 浏览

android - 为检测测试配置 testLogging

我想testLogging为我的仪器测试进行配置。但是,Gradle 似乎忽略了我在android.testOptions.unitTests.all.testLogging. 在那里,我已配置应记录所有通过和失败的测试,但不应记录跳过的测试。但是,Gradle 不会记录我通过的测试,但会记录我跳过的测试。

构建.gradle

ExampleInstrumentedTest.java

不幸的是,Gradle 没有考虑我的测试日志配置。除了我的 Gradle 配置之外,还会输出跳过的测试,但不会输出通过的测试。

输出

我在 GitHub 上托管了我完整的最小示例项目:pmwmedia/android-test-example