es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo probar la función init con @PostConstruct y map dentro con JUnit Mockito.

Tengo una clase para probar, pero no sé cómo probarla. ¿Alguien puede ayudarme a probarla?

@Component
public class KvkkCorrBankingExecuter {
private final Map operationMap = new HashMap<>();

IKvkkCorrBankingExecuter executer;

@Autowired
DemandBoeExecuter demandBoeExecuter;

@Autowired
DemandCleanBaExecuter demandCleanBaExecuter;

@Autowired
DemandGuaranteeExecuter demandGuaranteeExecuter;

@Autowired
DemandLcExecuter demandLcExecuter;

@Autowired
DemandSlcExecuter demandSlcExecuter;

@PostConstruct
public void init() {
    operationMap.put("DEMAND_BOE", demandBoeExecuter);
    operationMap.put("DEMAND_CLEAN_BA", demandCleanBaExecuter);
    operationMap.put("DEMAND_GUARANTEE", demandGuaranteeExecuter);
    operationMap.put("DEMAND_LC", demandLcExecuter);
    operationMap.put("DEMAND_SLC", demandSlcExecuter);
}

}

La línea del Map y la función init están resaltadas en rojo en la cobertura. Necesitan ser probadas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para probar la clase KvkkCorrBankingExecuter, puedes seguir los siguientes pasos:

    1. Crea una clase de prueba para KvkkCorrBankingExecuter.
    2. Instancia KvkkCorrBankingExecuter.
    3. Crea objetos simulados para cada uno de los campos autowired, es decir, DemandBoeExecuter, DemandCleanBaExecuter, DemandGuaranteeExecuter, DemandLcExecuter y DemandSlcExecuter.
    4. Configura las expectativas para cada uno de los objetos simulados que se utilizarán en la prueba.
    5. Llama al método init en la instancia de KvkkCorrBankingExecuter.
    6. Verifica que el objeto operationMap contenga todas las entradas esperadas.

    Aquí tienes un ejemplo de clase de prueba para KvkkCorrBankingExecuter:

    public class KvkkCorrBankingExecuterTest {
    
        private KvkkCorrBankingExecuter executer;
    
        @Mock
        private DemandBoeExecuter demandBoeExecuter;
    
        @Mock
        private DemandCleanBaExecuter demandCleanBaExecuter;
    
        @Mock
        private DemandGuaranteeExecuter demandGuaranteeExecuter;
    
        @Mock
        private DemandLcExecuter demandLcExecuter;
    
        @Mock
        private DemandSlcExecuter demandSlcExecuter;
    
        @Before
        public void setUp() {
            MockitoAnnotations.initMocks(this);
            executer = new KvkkCorrBankingExecuter();
    
            executer.demandBoeExecuter = demandBoeExecuter;
            executer.demandCleanBaExecuter = demandCleanBaExecuter;
            executer.demandGuaranteeExecuter = demandGuaranteeExecuter;
            executer.demandLcExecuter = demandLcExecuter;
            executer.demandSlcExecuter = demandSlcExecuter;
        }
    
        @Test
        public void testInit() {
            executer.init();
    
            Assert.assertTrue(executer.operationMap.containsKey("DEMAND_BOE"));
            Assert.assertTrue(executer.operationMap.containsKey("DEMAND_CLEAN_BA"));
            Assert.assertTrue(executer.operationMap.containsKey("DEMAND_GUARANTEE"));
            Assert.assertTrue(executer.operationMap.containsKey("DEMAND_LC"));
            Assert.assertTrue(executer.operationMap.containsKey("DEMAND_SLC"));
    
            Assert.assertEquals(demandBoeExecuter, executer.operationMap.get("DEMAND_BOE"));
            Assert.assertEquals(demandCleanBaExecuter, executer.operationMap.get("DEMAND_CLEAN_BA"));
            Assert.assertEquals(demandGuaranteeExecuter, executer.operationMap.get("DEMAND_GUARANTEE"));
            Assert.assertEquals(demandLcExecuter, executer.operationMap.get("DEMAND_LC"));
            Assert.assertEquals(demandSlcExecuter, executer.operationMap.get("DEMAND_SLC"));
        }
    }
    

    Ten en cuenta que hemos utilizado las anotaciones @Mock y MockitoAnnotations.initMocks(this) para crear objetos simulados para las pruebas. También hemos utilizado la anotación @Before para configurar los objetos simulados y la anotación @Test para definir el método de prueba real. Por último, hemos utilizado afirmaciones para verificar que el objeto operationMap se ha poblado correctamente después de llamar al método init.

Comments are closed.