Внедрение зависимостей с помощью Guice + Cucumber: не удалось найти подходящий конструктор - PullRequest
0 голосов
/ 10 июня 2019

Я сталкиваюсь с ошибкой «Не удалось найти подходящий конструктор. Классы должны иметь либо один (и только один) конструктор, аннотированный @Inject, либо конструктор с нулевым аргументом, который не является закрытым».пока я добавляю тесты используя Cucumber + Guice.Это новый пакет кода.Есть ли у вас понимание того, что мне не хватает?

public class AWSServiceModule extends AbstractModule {

    @Override
    protected void configure() {

    }

    @Provides
    @Singleton
    public AWSBatch provideAwsBatchClient() {
        return AWSBatchClientBuilder.standard()
                .withCredentials(new DefaultAWSCredentialsProviderChain())
                .build();
    }

    @Provides
    @Singleton
    public BatchJobClient provideTestBatchClient(final AWSBatch batchClient) {
        return new BatchJobClient(batchClient, JOB_DEFINITION, JOB_QUEUE);
    }

    @Provides
    @Singleton
    public BatchJobIntegrationTest provideBatchJobIntegrationTest (
            final BatchJobClient batchJobClient) {
        return new BatchJobIntegrationTest(batchJobClient);
    }
public class CucumberGuiceInjector implements InjectorSource {

    @Override
    public Injector getInjector() {
        return Guice.createInjector(Stage.PRODUCTION, CucumberModules.SCENARIO, new AWSServiceModule());
    }
}
public class BatchJobSteps {

    @Inject
    private BatchJobIntegrationTest testJob;

    @Given("^input file exists$")
    public void input_file_exists() {
        testJob.injectInputs();
    }

    @When("^application is run with the given scenario in FP mode$")
    public void application_is_run_with_the_given_scenario_in_FP_mode() {
        testJob.runBatchJob();
    }

    @Then("^the batch job generates options as expected and stores them in the designated bucket in S3")
    public void the_batch_job_generates_options_as_expected_and_stores_them_in_the_designated_bucket_in_S3() {
        testJob.assertTestResults();
    }
}
public class BatchJobIntegrationTest extends BatchJobIntegrationTestBase {

    public BatchJobIntegrationTest(final BatchJobClient batchJobClient) {
        super(batchJobClient);
    }

    @Override
    public void injectInputs() {
        // TODO: get the S3 path parameter for input
        Assert.assertTrue(true);
    }

    public void runBatchJob() {
        // TODO: runBatchJob(BATCH_JOB_NAME);
        Assert.assertTrue(true);
    }

    @Override
    public void assertTestResults() {
        // TODO: compare the batch output and expected output from S3
        Assert.assertTrue(true);
    }

    @Override
    protected ContainerOverrides getContainerOverrides() {
        return null;
    }
}
...