Макрос panic! в тестах
Макрос panic! вызывает панику и немедленно
прерывает выполнение текущего теста. Он принимает
строку с сообщением об ошибке, которая выводится
в консоль при запуске тестов. Если тест завершается
паникой, он считается проваленным.
Синтаксис
panic!("сообщение об ошибке")
Пример
Давайте напишем тест, который всегда завершается паникой с сообщением:
fn check_value(x: i32) -> i32
{
if x < 0 {
panic!("negative value");
}
x
}
fn main()
{
let res = check_value(5);
println!("{}", res);
}
Результат выполнения кода:
5
Пример
Давайте вызовем функцию с отрицательным значением, что приведет к панике:
fn check_value(x: i32) -> i32
{
if x < 0 {
panic!("negative value");
}
x
}
fn main()
{
let res = check_value(-3);
println!("{}", res);
}
Результат выполнения кода:
thread 'main' panicked at 'negative value'
Пример
Давайте проверим условие и вызовем панику, если оно не выполнено:
fn test_sum(a: i32, b: i32, expected: i32)
{
let res = a + b;
if res != expected {
panic!("expected {}, got {}", expected, res);
}
println!("test passed");
}
fn main()
{
test_sum(2, 3, 5);
}
Результат выполнения кода:
"test passed"
Смотрите также
-
макрос
assert!,
который проверяет истинность условия в тестах -
макрос
assert_eq!,
который проверяет равенство двух значений -
атрибут
should_panic,
который проверяет, что тест вызывает панику -
атрибут
should_panic expected,
который проверяет сообщение паники в тесте