Я использую spring boot
версию 2.1.9
с spring-data
. Я определил хранилище
interface TokenRepository : CrudRepository<Token, Long> {
fun findBySubject(subject: String): Token?
}
. Для целей тестирования я создал абстрактную подделку CrudRepository
, которая реализует все методы из CrudRepository
:
abstract class RepositoryFake<T> : CrudRepository<T, Long> {
...
override fun existsById(id: Long): Boolean {
...
}
override fun deleteById(id: Long) {
...
}
override fun findById(id: Long): Optional<T> {
...
}
...
}
. когда я создаю реализацию TokenRepository
, которая расширяет RepositoryFake
class TokenRepositoryFake : RepositoryFake<Token>(), TokenRepository {
override fun findBySubject(subject: String): Token? {
...
}
}
, компилятор жалуется, что TokenRepositoryFake
не является абстрактным и не реализует методы existsById
, deleteById
и findById
, несмотря на то, что эти методы были реализованы в RepositoryFake
. Он не жалуется на другие методы, определенные в CrudRepository
. Почему компилятор жалуется на отсутствующие методы, а не на все остальные методы?
Пример сообщения об ошибке: Class 'TokenRepositoryFake' is not abstract and does not implement abstract member public abstract fun deleteById(p0: Long): Unit defined in my.repositories.TokenRepository