Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Chạy test

cargo test biên dịch code ở chế độ test rồi chạy binary test sinh ra; các cờ sau dấu -- được truyền thẳng cho binary đó thay vì cho cargo test (cargo test -- --cờ-của-binary).

Chạy song song và trạng thái chia sẻ

Mặc định, cargo test chạy mỗi test trên một luồng riêng, song song — nhanh hơn chạy tuần tự, nhưng kéo theo một hệ quả dễ bị bỏ qua: nếu nhiều test cùng đọc/ghi một trạng thái chung (một file trên đĩa, một biến môi trường, một thư mục làm việc), chúng có thể va vào nhau và cho kết quả sai lệch tuỳ thứ tự chạy — đúng dạng lỗi khó dò vì không tái hiện được ổn định. Ép chạy tuần tự khi test có chia sẻ trạng thái:

cargo test -- --test-threads=1

Output của test

Theo mặc định, cargo test ẩn toàn bộ output (println!, …) của một test pass — chỉ hiện khi test đó fail, để kết quả chạy test gọn, không bị ngợp bởi log của hàng trăm test đều pass. Muốn luôn thấy output kể cả khi pass:

cargo test -- --show-output

Chạy một tập con test

Chạy test theo tên chính xác:

cargo test kiem_tra_cong

Hoặc theo một phần tên chung — mọi test có tên chứa chuỗi đó đều chạy, tiện khi đặt tên test có tiền tố chung theo nhóm chức năng:

cargo test kiem_tra

Bỏ qua test tốn thời gian

Đánh dấu #[ignore] cho test chạy lâu (tích hợp, benchmark thô) để cargo test bình thường bỏ qua, chỉ chạy khi được yêu cầu rõ ràng:

#![allow(unused)]
fn main() {
#[test]
fn test_nhanh() {
    assert_eq!(2 + 2, 4);
}

#[test]
#[ignore]
fn test_cham() {
    // giả sử đây là một thao tác tốn nhiều thời gian
    assert_eq!(2 + 2, 4);
}
}
cargo test              # bỏ qua test_cham
cargo test -- --ignored # chỉ chạy các test đã đánh dấu ignore