1

Say, у меня есть следующий интерфейс:getAnnotation для Java аннотаций, используемых на методе Котлин возвращает нулевое

interface AppRepository : GraphRepository<App> { 

    @Query("""MATCH (a:App) RETURN a""") 
    fun findAll(): List<App> 
} 

В тесте я хочу, чтобы проверить особенности строки запроса, и поэтому я делаю

open class AppRepositoryTest { 

    lateinit @Autowired var appRepository: AppRepository 

    @Test 
    open fun checkQuery() { 
     val productionMethod = appRepository.javaClass.getDeclaredMethod("findAll") 
     val productionQuery = productionMethod!!.getAnnotation(Query::class.java) 

     //demo test 
     assertThat(productionQuery!!.value).isNotEmpty() //KotlinNPE 
    } 
} 

По какой-то причине я не понимаю, productionQuery is n null. Я дважды проверил, что типы импортированных Query в тестовом классе и Query в репозитории одинаковы.

Таким образом, почему productionQuerynull в этом случае?

ответ

4

вы загружаете аннотации на findAll из реализующего класса (т.е. класса экземпляра appRepository), а не на findAll из интерфейса. Чтобы загрузить аннотации из AppRepository:

+0

dammit :) so embarrasing. –

 Смежные вопросы

  • Нет связанных вопросов^_^