2012-09-29 11 views
7

me gustaría mostrar el mensaje de excepción lanzada en la prueba de Scala.Cómo mostrar excepción lanzada en el "debe producir [Excepción]” en ScalaTest

" iWillThrowCustomException Method Failure test. 
" should "Fail, Reason: Reason for failing. " in { 
evaluating { 
     iWillThrowCustomException(); 
    } should produce [CustomException] 
} 

Si CustomExeption arrojará diferentes tipos de mensajes para entradas diferentes personas, decir

(por cantidad -ve - cantidad es menor que cero, por caracteres en cantidad - cantidad no válida),

cómo mostrar el mensaje que se lanza en el bloque, becuase lo hará a través de la CustomException y mostrará Test Success, pero para qué senario ha arrojado el error

Respuesta

9

evaluating también devuelve una excepción para que pueda inspeccionarlo o imprimir el mensaje. Aquí es ejemplo de la ScalaDoc:

val thrown = evaluating { s.charAt(-1) } should produce [IndexOutOfBoundsException] 
thrown.getMessage should equal ("String index out of range: -1") 

Por lo que yo sé, no se puede incluir mensaje de excepción en el nombre de la prueba.


Lo que puede hacer, es añadir información adicional sobre la prueba con info():

"iWillThrowCustomException Method Failure test." in { 
    val exception = evaluating { iWillThrowCustomException() } should produce [CustomException] 
    info("Reason: " + exception.getMessage) 
} 

Esto se muestra en los resultados de la prueba como mensaje anidado. Puede encontrar más información sobre este in ScalaDoc.

+0

Muchas gracias, esto es exactamente lo que estaba buscando. – Azhar

11

Alternativamente se puede comprobar a cabo intercept:

val ex = intercept[CustomException] { 
    iWillThrowCustomException() 
} 
ex.getMessage should equal ("My custom message") 
Cuestiones relacionadas