Spring Batch Tasklet для проверки файлов — требуется обработка исключений ⇐ JAVA
Spring Batch Tasklet для проверки файлов — требуется обработка исключений
// ... предыдущие тестовые примеры ... @Тест public void WhenRecurAmtTypeIsMIN_ADDL_AndProcessCodeIsNotP00_ThenSetAutopayMinAdditional() выдает исключение { // Договариваться PaymentInfoDTO inputDto = новый PaymentInfoDTO (); inputDto.setRecurAmtType("MIN_ADDL"); inputDto.setProcessCode("Не P00"); inputDto.setAdditionalAmt(new BigDecimal("150.00")); // Действовать Результат PaymentInfoDTO = процессор.процесс(inputDto); // Утверждать AssertEquals(PaymentInfoProcessor.SST_AUTOPAY_MIN, result.getPaymentType()); AssertEquals(new BigDecimal("150.00"), result.getOrigPaymentAmt()); AssertEquals("МИН", result.getAmtType()); } @Тест public void WhenRecurAmtTypeIsSTMT_BAL_AndProcessCodeIsP00_ThenSetOnetimePif() выдает исключение { // Договариваться PaymentInfoDTO inputDto = новый PaymentInfoDTO (); inputDto.setRecurAmtType("STMT_BAL"); inputDto.setProcessCode("P00"); inputDto.setStmtCrtRegAmt(new BigDecimal("250.00")); // Действовать Результат PaymentInfoDTO = процессор.процесс(inputDto); // Утверждать AssertEquals(PaymentInfoProcessor.SST_ONETIME_PIF, result.getPaymentType()); AssertEquals(new BigDecimal("250.00"), result.getOrigPaymentAmt()); AssertEquals("BAL", result.getAmtType()); } // Продолжаем писать больше тестов для каждого случая // ... @Тест public void WhenRecurAmtTypeIsOther_AndProcessCodeIsNotP00_ThenSetFixedRecur() выдает исключение { // Договариваться PaymentInfoDTO inputDto = новый PaymentInfoDTO (); inputDto.setRecurAmtType("ДРУГОЙ"); inputDto.setProcessCode("Не P00"); inputDto.setAmt(new BigDecimal("300.00")); // Действовать Результат PaymentInfoDTO = процессор.процесс(inputDto); // Утверждать AssertEquals(PaymentInfoProcessor.SST_FIXED_RECUR, result.getPaymentType()); AssertEquals(new BigDecimal("300.00"), result.getOrigPaymentAmt()); // ... дополнительные утверждения для других полей при необходимости } // ... продолжаем другие тесты... // Тест случая по умолчанию (если применимо) @Тест public void WhenRecurAmtTypeDoesNotMatchAnyCase_ThenDefaultValuesAreSet() выдает исключение { // Договариваться PaymentInfoDTO inputDto = новый PaymentInfoDTO (); inputDto.setRecurAmtType("NON_EXISTENT_CASE"); inputDto.setProcessCode("P00"); // ... устанавливаем dto со значениями по умолчанию // Действовать Результат PaymentInfoDTO = процессор.процесс(inputDto); // Утверждать // ... утверждаем, что значения по умолчанию установлены как ожидалось } // ... конец тестового класса Таслет спроектирован так, чтобы быть модульным и допускающим многократное использование, поскольку он будет частью нескольких пакетных заданий с одинаковыми требованиями к проверке файлов. Я использую аннотацию @Value Spring для внедрения путей к файлам из конфигурации приложения, что обеспечивает гибкость в различных средах (разработка, промежуточное хранение, производство).
Я столкнулся с трудностями при правильной обработке исключений. Когда создается исключение, я хочу убедиться, что оно зарегистрировано с достаточной подробностью и что статус завершения пакетного задания установлен так, чтобы указывать на сбой, запуская соответствующие последующие процессы в нашей настройке оркестрации заданий.
Кроме того, я ищу рекомендации по управлению ресурсами в тасклете, особенно по освобождению дескрипторов файлов и обеспечению правильного закрытия файловых потоков в случае ошибки.
Может ли кто-нибудь просмотреть мой подход к обработке исключений и управлению ресурсами? Мы будем очень признательны за любые идеи по повышению надежности и удобства сопровождения этого кода.
// ... предыдущие тестовые примеры ... @Тест public void WhenRecurAmtTypeIsMIN_ADDL_AndProcessCodeIsNotP00_ThenSetAutopayMinAdditional() выдает исключение { // Договариваться PaymentInfoDTO inputDto = новый PaymentInfoDTO (); inputDto.setRecurAmtType("MIN_ADDL"); inputDto.setProcessCode("Не P00"); inputDto.setAdditionalAmt(new BigDecimal("150.00")); // Действовать Результат PaymentInfoDTO = процессор.процесс(inputDto); // Утверждать AssertEquals(PaymentInfoProcessor.SST_AUTOPAY_MIN, result.getPaymentType()); AssertEquals(new BigDecimal("150.00"), result.getOrigPaymentAmt()); AssertEquals("МИН", result.getAmtType()); } @Тест public void WhenRecurAmtTypeIsSTMT_BAL_AndProcessCodeIsP00_ThenSetOnetimePif() выдает исключение { // Договариваться PaymentInfoDTO inputDto = новый PaymentInfoDTO (); inputDto.setRecurAmtType("STMT_BAL"); inputDto.setProcessCode("P00"); inputDto.setStmtCrtRegAmt(new BigDecimal("250.00")); // Действовать Результат PaymentInfoDTO = процессор.процесс(inputDto); // Утверждать AssertEquals(PaymentInfoProcessor.SST_ONETIME_PIF, result.getPaymentType()); AssertEquals(new BigDecimal("250.00"), result.getOrigPaymentAmt()); AssertEquals("BAL", result.getAmtType()); } // Продолжаем писать больше тестов для каждого случая // ... @Тест public void WhenRecurAmtTypeIsOther_AndProcessCodeIsNotP00_ThenSetFixedRecur() выдает исключение { // Договариваться PaymentInfoDTO inputDto = новый PaymentInfoDTO (); inputDto.setRecurAmtType("ДРУГОЙ"); inputDto.setProcessCode("Не P00"); inputDto.setAmt(new BigDecimal("300.00")); // Действовать Результат PaymentInfoDTO = процессор.процесс(inputDto); // Утверждать AssertEquals(PaymentInfoProcessor.SST_FIXED_RECUR, result.getPaymentType()); AssertEquals(new BigDecimal("300.00"), result.getOrigPaymentAmt()); // ... дополнительные утверждения для других полей при необходимости } // ... продолжаем другие тесты... // Тест случая по умолчанию (если применимо) @Тест public void WhenRecurAmtTypeDoesNotMatchAnyCase_ThenDefaultValuesAreSet() выдает исключение { // Договариваться PaymentInfoDTO inputDto = новый PaymentInfoDTO (); inputDto.setRecurAmtType("NON_EXISTENT_CASE"); inputDto.setProcessCode("P00"); // ... устанавливаем dto со значениями по умолчанию // Действовать Результат PaymentInfoDTO = процессор.процесс(inputDto); // Утверждать // ... утверждаем, что значения по умолчанию установлены как ожидалось } // ... конец тестового класса Таслет спроектирован так, чтобы быть модульным и допускающим многократное использование, поскольку он будет частью нескольких пакетных заданий с одинаковыми требованиями к проверке файлов. Я использую аннотацию @Value Spring для внедрения путей к файлам из конфигурации приложения, что обеспечивает гибкость в различных средах (разработка, промежуточное хранение, производство).
Я столкнулся с трудностями при правильной обработке исключений. Когда создается исключение, я хочу убедиться, что оно зарегистрировано с достаточной подробностью и что статус завершения пакетного задания установлен так, чтобы указывать на сбой, запуская соответствующие последующие процессы в нашей настройке оркестрации заданий.
Кроме того, я ищу рекомендации по управлению ресурсами в тасклете, особенно по освобождению дескрипторов файлов и обеспечению правильного закрытия файловых потоков в случае ошибки.
Может ли кто-нибудь просмотреть мой подход к обработке исключений и управлению ресурсами? Мы будем очень признательны за любые идеи по повышению надежности и удобства сопровождения этого кода.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Spring Batch Tasklet для проверки файлов — требуется обработка исключений
Anonymous » » в форуме JAVA - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Spring Batch Tasklet для проверки файлов — требуется обработка исключений
Anonymous » » в форуме Python - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Spring Batch Tasklet для проверки файлов — требуется обработка исключений
Anonymous » » в форуме Python - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Spring Batch Tasklet для проверки файлов – требуется обработка исключений
Anonymous » » в форуме Python - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Spring Batch Tasklet для проверки файлов — требуется обработка исключений
Anonymous » » в форуме Python - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-