Юнит-тесты и Rust

ИДея написания интегрированных юнит-тестов в Rust мне очень понравилась. Суть в том, что код тестов пишется не где-то сбоку, а в одном и том же файле что и основной рабочий код. И это еще не все! В процессе сборке, при помощи ключа компилятора –test можно запустить их на выполнение и посмотреть результаты их работы. Причем, совершенно не важно то, что у модуля нет функции main, она будет доавленна автоматически.
На практике это выглядит так:

fn foo() -> uint {
    ret 42;
}

#[test]
fn test_foo() {
    let foo_val = foo();

    assert foo_val != 0u;
}

Собираем и смотрим:

> rustc --test test.rc
> ./test
running 1 tests
test test_foo ... ok

result: ok. 1 passed; 0 failed; 0 ignored

На мой взгляд, реализация тестирования в Rust претендует на гордое звание идеальная!

4 Comments Юнит-тесты и Rust

    1. Alexander Stavonin

      Понятно, значит идея не нова. С другой стороны, авторы ржавчины говорили что ничего нового в языке не будет, зато соберут в кучу все хорошее что есть. Пока что, у них это получается.

      Reply
  1. sys_dev

    Не не не. Мухи и котлеты это разное! Production код должен быть как можно чище. Если усомнюсь в его работе запущу отдельно. Не пойму как он работает на другом мониторе разверну тесты или доку. А так. Зачем надо тесты в production?

    Reply
    1. Alexander Stavonin

      А мне нравится. С одной стороны, ты каждый модуль можешь запустить в виде теста. С другой ты всегда знаешь где лежат примеры использования

      Reply

Leave a Reply