1个不稳定版本
| 0.0.1 | 2023年1月30日 | 
|---|
#10 在 #teardown
8KB
112 行
这是什么?
此宏允许您为测试添加 setup 和 teardown。冗长的设置会分散您的注意力并使每个测试的空间变得杂乱,而理想情况下应该用于关注测试逻辑本身。
示例
以前需要做
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test_cat() {
        let db = reserve_path_for_db()
                    .make_tables_for_all_animals()
                    .unwrap();
        let animals = populate_animals_in(&db)
                    .then_add_breeds()
                    .then_listen()
                    .unwrap();
        // now test logic
        assert_eq!(animals.is("sphynx", "cat"), true);
    }
    #[test]
    fn test_dog() {
        let db = reserve_path_for_db()
                    .make_tables_for_all_animals()
                    .unwrap();
        let animals = populate_animals_in(&db)
                    .then_add_breeds()
                    .then_listen()
                    .unwrap();
        // now test logic
        assert_eq!(animals.is("bulldog", "dog"), true);
    }
}
现在您可以这样做
#[cfg(test)]
mod tests {
    use super::*;
    use tests_setup_teardown::{setup, setup_fn};
    #[setup_fn(visible = animals)]
    fn setup() {
        let db = reserve_path_for_db()
                    .make_tables_for_all_animals()
                    .unwrap();
        let animals = populate_animals_in(&db)
                    .then_add_breeds()
                    .then_listen()
                    .unwrap();
    }
    #[test]
    #[setup(visible = animals)]
    fn test_cat() {
        // now test logic
        assert_eq!(animals.is("sphynx", "cat"), true);
    }
    #[test]
    #[setup(visible = animals)]
    fn test_dog() {
        // now test logic
        assert_eq!(animals.is("bulldog", "dog"), true);
    }
}
依赖关系
~1.5MB
~36K SLoC