Size: a a a

2021 May 12

AG

Alexey Genus in pro.jvm
Я сегодня перещёл на 16-ю джавку. Mapstruct 1.4.2 (последний) нормально отрабатывает в обе стороны.
Могу, как говорится, держать в курсе, если будут проблемы. Пока вижу, что поддержка IDEA хромает
источник

ГР

Геннадий Романов... in pro.jvm
ok
источник

EF

Eugene Freeman in pro.jvm
ребятки, async profier уже опробовали, хороша штука?
источник

AG

Alexey Genus in pro.jvm
Да
источник

ГР

Геннадий Романов... in pro.jvm
хорошо я выделяю в первый метод
HttpPost httpPost = new HttpPost(urlSend);
HttpEntity httpEntity = EntityBuilder.
create()
       .setContentType(ContentType.
create("text/csv", StandardCharsets.UTF_8))
       .setFile(fileCsv)
       .build();
httpPost.setEntity(httpEntity);
httpPost.addHeader("Authorization", "Basic " + token);
httpPost.addHeader("Accept", "application/xml");


1. Что тут можно ЮНИТ тестировать?

Отправка она же получение ответа:
CloseableHttpResponse response = client.execute(httpPost)
попадает во второй метод

2. что мне тут и как замокать для тестирования?
источник

DC

Denis Chikanov in pro.jvm
1) что у тебя валидно сформирован реквест
2) клиент, и проверить, что респонс от него валидно парсится, например
В дальнейшем предлагаю с такими вопросами в @javastart
источник

Ш

Шура in pro.jvm
Мне интересно
источник

VP

Vladimir Petrakovich in pro.jvm
В Spring Boot в тестах как-то можно подложить готовый инстанс @ConfigurationProperties?
источник

C

Cargeh in pro.jvm
создать его бином? Через @Bean?
источник

VP

Vladimir Petrakovich in pro.jvm
Там вот такое:
Cannot bind @ConfigurationProperties for bean 'blablaProperties'. Ensure that @ConstructorBinding has not been applied to regular bean
источник

ГР

Геннадий Романов... in pro.jvm
Если
public void send(FileName fileName) {
   ...
   ExecutorService executorService = Executors.newFixedThreadPool(2*Runtime.getRuntime().availableProcessors());
   ...
   executorService.execute(...);
   ...
}
как мне замокать или spy executorService
чтобы протестировать executorService.execute в этом методе send?
источник

AB

Andrew Bystrov in pro.jvm
Не создавать executorService внутри метода, а использовать тот,который пришел. А там ты его сможешь замокать
источник

ГР

Геннадий Романов... in pro.jvm
пихать executorService параметром в метод только для того чтобы протестировать метод
неважное какое-то решение
источник

ГР

Геннадий Романов... in pro.jvm
Точнее

public void send(FileName fileName) {
   ...
   ExecutorService executorService = Executors.newFixedThreadPool(2*Runtime.getRuntime().availableProcessors());
   ...
   executorService.execute(...);
   ...
   ExecutorService executorService = Executors.newFixedThreadPool(2*Runtime.getRuntime().availableProcessors());
   ...
}

ExecutorService там все-равно дальше переопредялется логикой метода
и executorService.execute запускается в цикле снова который нужно отловить
источник

E

Etki in pro.jvm
создавать его вне метода и передавать в конструкторе, очевидно
источник

V

Vlad in pro.jvm
Параметром в конструктор.И это называется Dependency Injection и это the best для тестируемости кода
источник

ГР

Геннадий Романов... in pro.jvm
во-первых это не сработает,
так как логика самого метода подразумевает переопеределение ExecutorService

public void send(FileName fileName) {
   ...
while(...) {
   ...
   executorService.execute(...);
   ...
     if (...) { ExecutorService executorService = Executors.newFixedThreadPool(2*Runtime.getRuntime().availableProcessors());
    }
}
   ...
}
источник

ГР

Геннадий Романов... in pro.jvm
типо запускаются воркеры до определенного значения, потом остановка executorService и запуск по новой чтобы избежать outOfMemory
источник

V

Vlad in pro.jvm
это можно расчитать снаружи. Почему у тебя метод с названием send, решает сколько пул создать?
источник

V

Vlad in pro.jvm
зачем? у тебя есть очередь в executor service, превысить количество задач ты не сможешь
источник