Параметризованное тестирование с Robolectric - Как установить параметры для тестов отдельно? - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу создать новый параметризованный тест в уже существующем классе тестов, используя ParameterizedRobolectricTestRunner.

Я нашел только примеры и документацию, используя @ParameterizedRobolectricTestRunner.Parameters с одним тестом с использованием предоставленных параметров.Например:

@RunWith(ParameterizedRobolectricTestRunner::class)
class TestClass(private val type: String, private val value: Int) {

    @Test
    fun `single test example`() {
        assertEquals(type, parser.getTypeByValye(value))
    }

    companion object {
        @JvmStatic
        @ParameterizedRobolectricTestRunner.Parameters(name = "{0}")
        fun params() = listOf(
                arrayOf("TIPO 1", 1),
                arrayOf("TIPO 2", 2),
                arrayOf("TIPO 4", 3)
        )
    }
}

Но я хотел бы создать много тестов в одном файле с разными параметрами, как я обычно это делаю с JUnitParamsRunner и @Parameters.Например:

@RunWith(JUnitParamsRunner::class)
class TestClass {

    @Test
    @Parameters(method = "params1")
    fun `test example 1`(booleanParam: Boolean, enumParam: EnumParam) {
        givenBooleanParam(booleanParam)

        tested.doSomething()

        verify(anotherClass).doAnotherThing(enumParam, emptyMap())
    }

    @Test
    @Parameters(method = "params2")
    fun `test example 2`(enumParam: EnumParam, booleanParam: Boolean, stringParam: String) {
        givenString(stringParam)

        tested.doSomethingElse(booleanParam)

        verify(anotherClass).doAnotherThing(enumParam, emptyMap())
    }

    @Suppress("unused")
    private fun params1() =
            arrayOf(
                    arrayOf(true, EnumType1),
                    arrayOf(false, EnumType2)
            )

    @Suppress("unused")
    private fun params2() =
            arrayOf(
                    arrayOf(EnumType1, true, TRACK_ENUM_1),
                    arrayOf(EnumType2, false, TRACK_ENUM_2)
            )
}

Можно ли использовать что-то вроде @Parameters таким образом с ParameterizedRobolectricTestRunner?

...