Тестовые случаи Junit не удались для статического метода с java.lang.NoSuchFieldError: ошибка PASCAL_CASE_TO_CAMEL_CASEJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Тестовые случаи Junit не удались для статического метода с java.lang.NoSuchFieldError: ошибка PASCAL_CASE_TO_CAMEL_CASE

Сообщение Anonymous »


создание объекта sqs для публикации сообщения в очереди sqs.

public final class ClientFactory {

private SqsClientFactory() {
throw new ConstructorCallForbiddenException();
}

public static AmazonSQS buildSqs(String awsRegion) {
String regionName = Optional.ofNullable(awsRegion).filter(StringUtils::isNotBlank).orElseGet(() -> {
var region = Regions.getCurrentRegion();
if (region != null) {
return region.getName();
}
throw SqsClientException.regionNotAvailable();
});

return AmazonSQSClientBuilder.standard().withRegion(regionName).build();
}
}


Это наш основной класс, в котором мы отправляем сообщение в amazon sqs, и в первой строке метода мы пытаемся установить макетный объект sqs из UT.

@Component
@Slf4j
public class Publisher {

public void sendMessageToSqs(String eventPayload) {
AmazonSQS sqs = SqsClientFactory.buildSqsClient(awsRegion);
try {
Optional eventAsJsonOpt = formatErrorEventAsJson(eventPayload);
eventAsJsonOpt.ifPresent(eventJson -> {
var smr = sqs.sendMessage(new SendMessageRequest()
.withQueueUrl(queueUrl));
log.info("successfully published to SQS");
});
} catch (Exception e) {
log.error("Message failed to post into SQS queue : {} ", e);
}
}
}


там, когда мы пытались установить статический метод return для имитации Amazon sqs, затем возвращалась ошибка. даже мы попробовали использовать статический подход, тогда он сказал, что тип возвращаемого значения должен быть MockitoStatic. Проверка, а не Amazon sqs

@ExtendWith(MockitoExtension.class)
public class SqsPublisherTest {

@Mock
private AmazonSQS sqs;

@InjectMocks
private Publisher publisher;

@Test
public void testSQSClientBuilder() {
try (MockedStatic mockedBuilder = mockStatic(AmazonSQSClientBuilder.class)) {
AmazonSQSClientBuilder mockBuilder = mock(AmazonSQSClientBuilder.class);
mockedBuilder.when(AmazonSQSClientBuilder::standard).thenReturn(mockBuilder);

when(mockBuilder.withRegion("us-east-1")).thenReturn(mockBuilder);
when(mockBuilder.build()).thenReturn(sqs);

when(SqsClientFactory.buildSqsClient("us-east-1")).thenReturn(sqs);

publisher.sendMessageToSqs(Mockito.anyString());
}
}


зависимости maven pom для тестовых случаев junit

pom.xml


org.mockito
mockito-junit-jupiter
5.14.1
test



org.springframework.boot
spring-boot-starter-test
test



Подробнее здесь: https://stackoverflow.com/questions/791 ... error-pasc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»