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 parametrizo los métodos y las clases de Java?

Estoy usando Spock para pruebas unitarias. Quiero probar métodos y clases de Java de manera dinámica, como en el siguiente ejemplo. Audit es una clase de Java. Además, si es posible, también me gustaría hacer de la clase Audit un parámetro.
“`
given:
Audit audit = GroovyMock()
expression
BatchAudit bean = new BatchAudit()

when:
bean.insertAudit(audit)
then:
thrown(exc)
where:
expression | exc
audit.getFileName() >> {throw new SQLException(new Throwable())} | DataAccessException
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para probar métodos y clases de Java dinámicamente usando Spock, puedes utilizar el método GroovyMock() para crear una instancia simulada de la clase Audit.

    En el ejemplo proporcionado, el bloque given crea una instancia simulada de la clase Audit usando GroovyMock(). La expresión se ejecuta en el mismo bloque.

    El bloque when ejecuta el método objetivo (insertAudit()) en una instancia de la clase BatchAudit.

    El bloque then espera que se lance una excepción del tipo exc.

    Por último, el bloque where especifica los valores de parámetro para utilizar en la expresión y exc. Aquí, la expresión es audit.getFileName() y se espera la excepción DataAccessException.

    Para hacer que la clase Audit sea un parámetro, puedes reemplazar el bloque given con un bloque setup que define un parámetro para la clase Audit. Por ejemplo:

    setup:
        def audit = Audit.newInstance()
    
    given:
        expression
        BatchAudit bean = new BatchAudit()
    
    when:
        bean.insertAudit(audit)
    
    then:
        thrown(exc)
    
    where:
        expression | exc | audit
        audit.getFileName() >> {throw new SQLException(new Throwable())} | DataAccessException | Audit.newInstance()
    

    Aquí, el bloque setup crea una nueva instancia de la clase Audit usando Audit.newInstance(). El bloque where define un nuevo parámetro para audit. Esto permite hacer múltiples pruebas con diferentes instancias de la clase Audit.

Comments are closed.