Как написать интеграционные тесты для Spring-Batch-интеграции? - PullRequest
0 голосов
/ 25 июня 2019

Я использую Spring-Integration в комплекте с Spring-Batch и застрял, пытаясь написать интеграционные тесты для тестирования всего потока, а не только одной конфигурации.

Я создал Embedded Sftp Server для этих тестов и пытаюсь отправить сообщение в sftpInboundChannel - сообщение отправлено, но ничего не происходит, но когда я отправляю это сообщение на следующий канал (после sftpInboundChannel), все идет нормально. Также я не могу загрузить свойства исходного кода теста, хотя я использую аннотацию @TestPropertySource.

Это мои аннотации к классу


@TestPropertySource(properties = {
  //here goes all the properties
})
@EnableConfigurationProperties
@RunWith(SpringRunner.class)
@Import({TestConfig.class, SessionConfig.class})
@ActiveProfiles("it")
@SpringIntegrationTest
@EnableIntegration
@SpringBootTest
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)

Это мое тело класса

    @Autowired
    private PollableChannel sftpInboundChannel;

    @Autowired
    private SessionFactory<ChannelSftp.LsEntry> defaultSftpSessionFactory;

    @Autowired
    private EmbeddedSftpServer server;

@Test
    public void shouldDoSmth() {

        RemoteFileTemplate<ChannelSftp.LsEntry> template;
        try {
            template = new RemoteFileTemplate<>(defaultSftpSessionFactory);
            SftpTestUtils.moveToRemoteFolder(template);

            final List<ChannelSftp.LsEntry> movedFiles = SftpTestUtils.listFilesFromDirectory("folder/subfolder", template);
            log.info("Moved file {}", movedFiles.size());

            final MessageBuilder<String> messageBuilder = MessageBuilder.withPayload("Sample.txt") // path to file
                .setHeader("file_Path", "Sample.txt")

            boolean wasSent = this.sftpInboundChannel.send(messageBuilder.build());

            log.info("Was sent to sftpInboundChannel channel {}", wasSent);

            log.info("message {}", messageBuilder.build());
        } finally {
            SftpTestUtils.cleanUp();
        }
    }

1 Ответ

0 голосов
/ 03 июля 2019

В случае отсутствия чтения файла свойств, одно решение - добавить в ваш класс Test что-то вроде этого:

@BeforeClass
    public static void beforeClass() {
        System.setProperty("propertyfile",  "nameOfFile.properties");
     }

Второй способ - создать конфигурацию xml (или класса), в которую вы добавляететег:

<context:property-placeholder
    location="nameOfFile.properties"
    ignore-resource-not-found="true" system-properties-mode="OVERRIDE" />

и ваш файл будет локализован.

Файл свойств должен находиться внутри папки ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...