Тест модуля Guice: требуется привязка аннотированных строк

Я пытаюсь написать несколько тестов для моих общих модулей guice в репозитории моей библиотеки, которые я использую в нескольких проектах. Некоторые модули имеют инъекции аннотированных строк, которые вводят конфигурации проекта. Например, у меня есть модуль cassandra, который требует привязки String для хоста, порта и других конфигураций:

class CassandraModule : AbstractModule() {
companion object {
    const val CASSANDRA_HOST = "cassandra.host"
    const val CASSANDRA_PORT = "cassandra.port"
    ...

    const val MY_CASSANDRA_READ = "casandra.db.read"
    const val MY_CASSANDRA_WRITE = "casandra.db.write"
}

override fun configure() {
}

@Provides
@Singleton
@Named(MY_CASSANDRA_READ)
fun provideCassandraReadCluster(
    @Named(CASSANDRA_HOST) host: String,
    @Named(CASSANDRA_PORT) port: Int,
    @Named(CASSANDRA_DATACENTER) dc: String
): Cluster {
    val queryOptions = QueryOptions()
    queryOptions.consistencyLevel = ConsistencyLevel.LOCAL_ONE

    val cluster = Cluster.builder()
        .addContactPoint(host)
        .withPort(port)
        .withLoadBalancingPolicy(DCAwareRoundRobinPolicy(dc))
        .withQueryOptions(queryOptions)
        .build()
    return cluster
}

@Provides
@Singleton
@Named(MY_CASSANDRA_READ)
fun provideCassandraReadSession(
    @Named(MY_CASSANDRA_READ) cluster: Cluster,
    @Named(CASSANDRA_KEYSPACE) keyspace: String
): Session {
    return cluster.connect(keyspace)
}
...
}

Все эти привязки строк конфигурации должны поступать из других проектов через привязки Property, которые используют этот библиотечный модуль в качестве зависимости. Как издеваться над этими аннотированными строковыми свойствами?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
379
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Почему вы хотите поиздеваться над ними? Вы можете зарегистрировать в своих тестах дополнительный модуль, который предоставляет эти значения.

Ты прав. Кажется, это простой и эффективный путь.

breezymri 30.05.2018 19:31

Другие вопросы по теме