Отладка в Intelij работает через тестовую спецификацию, но не напрямую через основной код - PullRequest
0 голосов
/ 10 февраля 2019

В существующем приложении профиля службы micronaut я добавил зависимости picocli и создал команду и спецификацию тестирования команды.Когда я отлаживаю команду через Intellij, аннотированные переменные не вводятся.В частности, ingestClient имеет значение null.Когда я отлаживаю спецификацию спока, инъекция происходит.Что-то мне не хватает?

Это команда:

package abbvie.esp.ingest.attache

import abbvie.esp.ingest.attache.model.LoadResult
import groovy.transform.CompileStatic
import io.micronaut.configuration.picocli.PicocliRunner
import io.reactivex.Flowable
import picocli.CommandLine.Command
import picocli.CommandLine.Option

import javax.inject.Inject

@CompileStatic
@Command(name = 'ingest', description = 'Command line tool to control ingestion of Attache Pro content into the search index.',
        mixinStandardHelpOptions = true)
class IngestCommand implements Runnable {

    @Inject
    IngestClient ingestClient

    @Option(names = ['-v', '--verbose'], description = '...')
    boolean verbose

    static void main(String[] args) throws Exception {
        PicocliRunner.run(IngestCommand, args)
    }

    void run() {
        Flowable<LoadResult> results = ingestClient.ingestCabinets()
        for (LoadResult result : results.blockingIterable()) {
            println result.id
        }
    }
}

Это спецификация:

package abbvie.esp.ingest.attache

import io.micronaut.configuration.picocli.PicocliRunner
import io.micronaut.context.ApplicationContext
import io.micronaut.context.env.Environment
import spock.lang.AutoCleanup
import spock.lang.Shared
import spock.lang.Specification

class IngestCommandSpec extends Specification {

    @Shared
    @AutoCleanup
    ApplicationContext ctx = ApplicationContext.run(Environment.CLI, Environment.TEST)

    void "test with command line option"() {
        given:

        String[] args = ['-v'] as String[]
        PicocliRunner.run(IngestCommand, ctx, args)

        expect:
        args.length > 0
    }
}

1 Ответ

0 голосов
/ 10 февраля 2019

Распространенной проблемой является то, что обработка аннотаций еще не была включена в IntelliJ.

Вы можете включить обработку аннотаций в «Построение, выполнение, развертывание> Компилятор> Процессоры аннотаций», установив флажок «Включить обработку аннотаций».

См. Также: https://docs.micronaut.io/latest/guide/index.html#ideSetup

PS.Надеюсь, вам понравится picocli .Наслаждайтесь!

...