Anuncios

Bienvenidos sean a este post, hoy volvemos con las macros assert y una caracteristica.

Anuncios
Anuncios

Ya vimos como trabajar con assert, assert_eq y assert_ne, pero todas estas macros permiten agregar un mensaje personalizado para que podamos saber de mejor forma una falla, para ello simplemente debemos agregar un mensaje despues de los atributos que usaremos para comparar, para entenderlo vamos a utilizar el codigo que vimos en el post anterior, en caso de no tenerlo simplemente generen un nuevo proyecto de tipo libreria con el nombre prueba, y modificaremos el archivo lib.rs de la siguiente manera:

lib.rs

pub fn agregar_dos(a: i32) -> i32
{
	a + 2
}

#[cfg(test)]
mod tests {
	use super::*;

	#[test]
	fn agrego_dos()
	{
		assert_eq!(4, agregar_dos(2), "Los valores son distintos");
		assert_ne!(4, agregar_dos(2), "Los valores son iguales");
	}	
}
Anuncios

Es basicamente lo que vimos en el post anterior pero la unica diferencia es que despues de los valores que pasamos en las macros le agregamos un texto que identifica de mejor manera la falla en cada una de ellas, ahora simplemente volvamos a correr el test y veamos como es su salida:

tinchicus@dbn001vrt:~/lenguajes/rust/prueba$ cargo test
    Finished test [unoptimized + debuginfo] target(s) in 0.01s
     Running unittests (target/debug/deps/prueba-e23faeddfadd8fad)

running 1 test
test tests::agrego_dos ... FAILED

failures:

---- tests::agrego_dos stdout ----
thread 'main' panicked at 'assertion failed: `(left != right)`
  left: `4`,
 right: `4`: Los valores son iguales', src/lib.rs:14:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    tests::agrego_dos

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

error: test failed, to rerun pass '--lib'
tinchicus@dbn001vrt:~/lenguajes/rust/prueba$
Anuncios

En este caso volvio a fallar pero observen como ahora al lado de la notificacion de falla causada por el panic tenemos un mensaje que nos identifica de mejor manera porque ocurrio la falla, pero como vimos en los posts anteriores este mensaje es opcional y no afecta al funcionamiento la falta del mismo pero si necesitamos hacer una muestra mas completa de nuestra falla lo podemos utilizarlo de la siguiente manera a cada macro:

assert!(argumento[, mensaje])
Anuncios
assert_eq!(valor1, valor2[, mensaje])
Anuncios
assert_ne!(valor1, valor2[, mensaje])
Anuncios

En resumen, hoy hemos visto una caracteristica de los assert, en este caso la capacidad de poder agregar un mensaje personalizado para poder complementar al mensaje que nos entrega panic, en este caso hemos tomado el caso que vimo en el post anterior y le agregamos un mensaje a cada assert para saber el motivo de la falla, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50