В существующем приложении профиля службы 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
}
}