Fundamentos del Testing de Integración en Rust

RustRustBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, se discute el testing de integración, que implica probar múltiples partes de una biblioteca juntas utilizando su interfaz pública. Las pruebas de integración se pueden colocar en el directorio tests junto al directorio src en un crate de Rust, y se ejecutan utilizando el comando cargo test. Además, el código común se puede compartir entre las pruebas de integración creando un módulo con funciones públicas e importándolo dentro de las pruebas.

Nota: Si el laboratorio no especifica un nombre de archivo, puede utilizar cualquier nombre de archivo que desee. Por ejemplo, puede utilizar main.rs, compilar y ejecutarlo con rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust(("Rust")) -.-> rust/AdvancedTopicsGroup(["Advanced Topics"]) rust(("Rust")) -.-> rust/ProjectManagementandOrganizationGroup(["Project Management and Organization"]) rust/DataTypesGroup -.-> rust/integer_types("Integer Types") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") rust/AdvancedTopicsGroup -.-> rust/operator_overloading("Traits for Operator Overloading") rust/ProjectManagementandOrganizationGroup -.-> rust/module_system("Module System") subgraph Lab Skills rust/integer_types -.-> lab-99283{{"Fundamentos del Testing de Integración en Rust"}} rust/function_syntax -.-> lab-99283{{"Fundamentos del Testing de Integración en Rust"}} rust/expressions_statements -.-> lab-99283{{"Fundamentos del Testing de Integración en Rust"}} rust/method_syntax -.-> lab-99283{{"Fundamentos del Testing de Integración en Rust"}} rust/operator_overloading -.-> lab-99283{{"Fundamentos del Testing de Integración en Rust"}} rust/module_system -.-> lab-99283{{"Fundamentos del Testing de Integración en Rust"}} end

Testing de integración

Las pruebas unitarias prueban un módulo de forma aislada, una a la vez: son pequeñas y pueden probar código privado. Las pruebas de integración son externas a su crate y utilizan solo su interfaz pública de la misma manera que cualquier otro código. Su propósito es probar que muchas partes de su biblioteca funcionen correctamente juntas.

Cargo busca las pruebas de integración en el directorio tests junto a src.

Archivo src/lib.rs:

// Definir esto en un crate llamado `adder`.
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

Archivo con la prueba: tests/integration_test.rs:

#[test]
fn test_add() {
    assert_eq!(adder::add(3, 2), 5);
}

Ejecutar las pruebas con el comando cargo test:

$ cargo test
running 0 tests

test result: ok. 0 passed
0 failed
0 ignored
0 measured
0 filtered out

Running target/debug/deps/integration_test-bcd60824f5fbfe19

running 1 test
test test_add... ok

test result: ok. 1 passed
0 failed
0 ignored
0 measured
0 filtered out

Doc-tests adder

running 0 tests

test result: ok. 0 passed
0 failed
0 ignored
0 measured
0 filtered out

Cada archivo fuente de Rust en el directorio tests se compila como un crate independiente. Para compartir código entre las pruebas de integración, podemos crear un módulo con funciones públicas, importándolo y usándolo dentro de las pruebas.

Archivo tests/common/mod.rs:

pub fn setup() {
    // algún código de configuración, como crear archivos/directorios necesarios, iniciar
    // servidores, etc.
}

Archivo con la prueba: tests/integration_test.rs

// importando el módulo común.
mod common;

#[test]
fn test_add() {
    // usando el código común.
    common::setup();
    assert_eq!(adder::add(3, 2), 5);
}

Crear el módulo como tests/common.rs también funciona, pero no se recomienda porque el ejecutor de pruebas tratará el archivo como un crate de prueba e intentará ejecutar las pruebas dentro de él.

Resumen

¡Felicitaciones! Has completado el laboratorio de Testing de Integración. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.