Mockito kann nicht verspottet/spionieren, weil die endgültige Klasse - Fehler in Java Quarkus GRPC mit Mockito [DuplikatJava

Java-Forum
Anonymous
 Mockito kann nicht verspottet/spionieren, weil die endgültige Klasse - Fehler in Java Quarkus GRPC mit Mockito [Duplikat

Post by Anonymous »

Guten Tag. < /p>
Ich habe den folgenden Fehler in der Validierungsklasse.

Code: Select all

[ERROR] RequestValidatorTest.setUp:32 Mockito
Cannot mock/spy class com.cies.grpc.proto.ValidateNumberActivationRequest
Mockito cannot mock/spy because:
- final class
Die betreffende Klasse lautet wie folgt und validiert eine Anfrage (ich arbeite mit GRPC in Quarkus):
RequestValidatortest

Code: Select all

package com.tmve.customer.validators;

import com.cies.grpc.proto.ValidateNumberActivationRequest;
import com.tmve.customer.util.CustomLogger;
import com.tmve.customer.util.LogMessage;
import io.grpc.StatusRuntimeException;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@QuarkusTest
public class RequestValidatorTest {

@InjectMocks
private RequestValidator requestValidator;

@Mock
private CustomLogger customLogger;

@Mock
private ValidateNumberActivationRequest request;

@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}

@Test
void testValidateNumberActivation_Success() {
when(request.getMsisdn()).thenReturn("145869997");

assertDoesNotThrow(() -> requestValidator.validateNumberActivationRequest(request));
verify(customLogger).logInfo(requestValidator, LogMessage.VALIDATING_REQUEST.getMessage(), request);
verify(customLogger).logInfo(requestValidator, LogMessage.VALIDATION_SUCCESSFUL.getMessage(), request);
}

@Test
void testValidateNumberActivation_EmptyMsisdn() {
when(request.getMsisdn()).thenReturn("");

StatusRuntimeException exception = assertThrows(StatusRuntimeException.class, () -> {
requestValidator.validateNumberActivationRequest(request);
});
assertEquals("INVALID_ARGUMENT: El campo msisdn no puede estar vacio", exception.getMessage());
}

}
< /code>
Die im Fehler verwiesene Klasse lautet wie folgt (es handelt sich um eine GRPC -Klasse in Quarkus). Dies ist eine Klasse, die mit der GRPC -Proto -Datei kompiliert wird: < /p>
validatenumberArtivationRequest < /p>
// Generated by the protocol buffer compiler.   DO NOT EDIT!
// source: ValidateNumberActivation.proto
// Protobuf Java Version: 3.25.5
package com.cies.grpc.proto;

/**
* Protobuf type {@code ValidateNumberActivation.ValidateNumberActivationRequest}
*/
public final class ValidateNumberActivationRequest extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:ValidateNumberActivation.ValidateNumberActivationRequest)
ValidateNumberActivationRequestOrBuilder {

private static final long serialVersionUID = 0L;

// Use ValidateNumberActivationRequest.newBuilder() to construct.
private ValidateNumberActivationRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
super(builder);
}

private ValidateNumberActivationRequest() {
msisdn_ = "";
}

@java.lang.Override
@SuppressWarnings({ "unused" })
protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
return new ValidateNumberActivationRequest();
}

public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
return com.cies.grpc.proto.ValidateNumberActivation.internal_static_ValidateNumberActivation_ValidateNumberActivationRequest_descriptor;
}

@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
return com.cies.grpc.proto.ValidateNumberActivation.internal_static_ValidateNumberActivation_ValidateNumberActivationRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(com.cies.grpc.proto.ValidateNumberActivationRequest.class, com.cies.grpc.proto.ValidateNumberActivationRequest.Builder.class);
}

public static final int MSISDN_FIELD_NUMBER = 1;

@SuppressWarnings("serial")
private volatile java.lang.Object msisdn_ = "";

/**
* string msisdn = 1;
* @return The msisdn.
*/
@java.lang.Override
public java.lang.String getMsisdn() {
java.lang.Object ref = msisdn_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
msisdn_ = s;
return s;
}
.... Omiteed ......
< /code>
Wie kann ich das beheben? < /p>
Dies ist mein pom.xml < /p>

Code: Select all


4.0.0
org.tmve.customer
validate-number-activation
1.0.0-DEV


3.13.0
17
UTF-8
UTF-8
quarkus-bom
io.quarkus.platform
3.15.1
true
3.5.2

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post