Как исправить NoSuchMethodError в методе startKoin () - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь запустить тесты с помощью Koin DI, как в примере https://insert -koin.io / docs / 2.0 / Documentation / koin-core / index.html # _making_your_test_a_koincomponent_with_kointest или https://insert -koin.io / документы / 2,0 / получение стартером / JUnit-тест / но каждый раз получаю NoSuchMethodError . Что я делаю не так?

Сначала я использовал уже созданные модули из пакета main , но возникла эта ошибка. Затем я создал модули в test package, но ошибка все та же.

Мой код

class ComponentA
class ComponentB(val a: ComponentA)

class SignInTest : KoinTest {

    val componentB : ComponentB by inject()

    @Before
    fun before() {
        startKoin { modules(
            module {
                single { ComponentA() }
                single { ComponentB(get()) }
            }) }
    }

    @Test
    fun test_test() {
        val componentA = get<ComponentA>()

        assertNotNull(componentA)
        assertEquals(componentA, componentB.a)
    }

    @After
    fun after() {
        stopKoin()
    }

java.lang.NoSuchMethodError: org.koin.core.definition.BeanDefinition. (Lorg / koin / core / квалификатор / квалификатор; Lorg / koin / core / квалификатор / квалификатор; Lkotlin / отражение / KClass;) V

at net.app.at.features.signin.SignInTest$before$1$1.invoke(SignInTest.kt:79)
at net.app.at.features.signin.SignInTest$before$1$1.invoke(SignInTest.kt:26)
at org.koin.dsl.ModuleKt.module(Module.kt:31)
at org.koin.dsl.ModuleKt.module$default(Module.kt:29)
at net.app.at.features.signin.SignInTest$before$1.invoke(SignInTest.kt:36)
at net.app.at.features.signin.SignInTest$before$1.invoke(SignInTest.kt:26)
at org.koin.core.context.GlobalContextKt.startKoin(GlobalContext.kt:72)
at net.app.at.features.signin.SignInTest.before(SignInTest.kt:35)

1 Ответ

1 голос
/ 24 июня 2019

Пожалуйста, проверьте версии библиотек Koin, которые вы используете.

У меня была такая же проблема. Оказывается, у меня в build.gradle было:

implementation "org.koin:koin-android:2.0.0-beta-1" 

и несколько строк ниже:

testImplementation "org.koin:koin-test:2.0.0"

Когда я установил версию 2.0.0 в обоих местах - все заработало.

...