我正在尝试编写一个参数化的仪器测试。这是我的代码:
class TempTest {
lateinit var context: Context
@BeforeEach
fun setUp() {
context = InstrumentationRegistry.getInstrumentation().targetContext
}
@ParameterizedTest
@MethodSource("testFormatNumberArguments")
fun testFormatNumberColor(value: Double, expected: CustomSpanColor) {
Assertions.assertEquals(expected, Temp.formatNumber(value).parseColor())
}
companion object {
val context = TempTest ().context
@JvmStatic
fun testFormatNumberArguments() = listOf(
Arguments.of(123.54, CustomSpanColor(context.getColor(R.color.yellow), 12),
Arguments.of(123,1, CustomSpanColor(context.getColor(R.color.white), 17)),
)
}
但是当我运行我的测试时,我收到以下错误:
org.junit.runners.model.InvalidTestClassError: 无效的测试类 'com. . . . ****.TempTest':
- 在 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()
:
@Parameterized.Parameters
@JvmStatic
fun testFormatNumberArguments() = listOf(
Arguments.of(123.54, CustomSpanColor(context.getColor(R.color.yellow), 12),
Arguments.of(123,1, CustomSpanColor(context.getColor(R.color.white), 17)),
)
但是,当我运行测试时出现以下错误:
org.junit.runners.model.InvalidTestClassError: 无效的测试类 'com. . . . ****.TempTest':
- 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
文件夹中编写参数化测试时出现问题。请帮我。