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.

Aumentar la cobertura de código en la creación de objetos locales del método o en la creación de objetos de bibliotecas de terceros o en la llamada a funciones de terceros.

Tengo que realizar pruebas unitarias en el método siguiente, en el cual todas las líneas de este código están relacionadas con la biblioteca de terceros de aws. El método también no devuelve nada. Por lo tanto, la única prueba que puedo realizar es verificar la excepción. ¿Hay alguna otra prueba que pueda realizar para mejorar la cobertura del código?

public void multipartUpload() throws InterruptedException {

    TransferManager tm = TransferManagerBuilder.standard()
                                               .withS3Client(s3Client)
                                               .withMultipartUploadThreshold(1024l)
                                               .build();

    PutObjectRequest request = new PutObjectRequest(bucketName, keyName, filePath);
    Upload upload = tm.upload(request);
    upload.waitForCompletion();
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    No hay mucho que se puede hacer en cuanto a la cobertura de código para este método, ya que solo interactúa con una biblioteca de terceros y no devuelve nada. Lo único que se puede probar es si se produce o no la excepción esperada, lo cual no es ideal, ya que solo cubre una pequeña parte del código.

    Sin embargo, aún puedes mejorar la calidad de tu prueba unitaria probando diferentes escenarios que pueden provocar que se lance la excepción. Por ejemplo, pruebe qué sucede cuando se proporciona una ruta de archivo no válida o cuando el bucket de AWS S3 no está disponible.

    Otro enfoque es simular el cliente de AWS S3 utilizando una biblioteca como Mockito, lo que te permite probar el método de manera más completa sin interactuar realmente con el servicio de AWS S3. Con esto, puedes probar si se llama al método adecuado en la clase TransferManager con los argumentos correctos o si se llama al método waitForCompletion().

    Si bien estas pruebas no aumentan la cobertura de código de este método en particular, aún prueban su funcionalidad y garantizan que funcione como se espera en diferentes escenarios.

Comments are closed.