Проведение тестов на ржавчину без груза: быстрые и простые методы

Когда дело доходит до тестирования кода Rust, менеджер пакетов Cargo является незаменимым инструментом для большинства разработчиков. Однако могут возникнуть ситуации, когда вы захотите запустить тесты, не полагаясь на Cargo. В этой статье мы рассмотрим несколько методов запуска тестов Rust без Cargo, предоставив вам альтернативные подходы, соответствующие вашим потребностям. Итак, приступим!

Метод 1: прямое использование компилятора Rust

Один простой метод — использовать компилятор Rust непосредственно для компиляции и запуска ваших тестов. Вот пошаговый пример:

  1. Скомпилируйте тестовый файл с помощью компилятора Rust:

    $ rustc --test <test_file.rs>
  2. Запустите скомпилированный исполняемый файл теста:

    $ ./<test_file>

Этот метод полезен, когда у вас есть один тестовый файл и вы хотите быстро проверить поведение без необходимости использования Cargo.

Метод 2: использование жгута для проверки на ржавчину

Rust предоставляет встроенный набор средств тестирования, который можно использовать для запуска тестов без Cargo. Тестовый пакет — это небольшая библиотека времени выполнения, специально разработанная для запуска тестов. Вот пример:

  1. Добавьте функцию testв файл Cargo.toml:

    [dev-dependencies]
    rustc-test = "0.3"
  2. Создайте тестовую функцию в своем коде:

    #[cfg(test)]
    mod tests {
    use rustc_test::test_case;
    #[test_case]
    fn my_test() {
        // Test assertions go here
        assert_eq!(2 + 2, 4);
    }
    }
  3. Скомпилируйте и запустите тесты, используя крейт rustc-test:

    $ rustc --edition=2018 -C opt-level=3 --test <test_file.rs> --extern rustc_test
    $ ./<test_file>

Этот метод обеспечивает большую гибкость, поскольку вы можете определить несколько тестов в своей кодовой базе.

Метод 3. Использование модуля std::rt

Другой альтернативой является использование модуля std::rt, который обеспечивает низкоуровневую поддержку во время выполнения. Вот пример:

  1. Импортируйте модуль std::rtв свой код:

    #![feature(rustc_private)]
    extern crate rustc_driver;
    extern crate rustc_hir;
    use std::rt::entry;
    #[cfg(test)]
    mod tests {
    #[test]
    fn my_test() {
        // Test assertions go here
        assert_eq!(2 + 2, 4);
    }
    }
    fn main() {
    // Your main code goes here
    }
    #[cfg(not(test))]
    #[entry]
    fn start(_argc: isize, _argv: *const *const u8) -> isize {
    main();
    0
    }
  2. Скомпилируйте и запустите тесты:

    $ rustc --test <test_file.rs> --extern rustc_driver --extern rustc_hir
    $ ./<test_file>

Этот метод позволяет интегрировать тесты в основной код, сохраняя при этом их раздельность.

В этой статье мы рассмотрели несколько способов запуска тестов Rust без использования Cargo. Независимо от того, предпочитаете ли вы использовать компилятор Rust напрямую, использовать средства тестирования Rust или использовать модуль std::rt, теперь в вашем распоряжении есть альтернативные подходы. Выберите метод, который лучше всего соответствует вашим потребностям, и начните тестировать свой код Rust без проблем!

Выполняя тесты Rust без Cargo, вы можете оптимизировать процесс тестирования и получить больше контроля над выполнением тестов. Так зачем ограничивать себя только Cargo? Попробуйте эти методы и улучшите свой опыт разработки на Rust уже сегодня!