0

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

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':

  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()

  @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':

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

4

0 回答 0