19 个不稳定版本 (3 个重大更改)

0.4.5 2020年9月13日
0.4.4 2020年9月13日
0.4.1 2020年8月5日
0.3.2 2020年8月3日
0.1.0 2020年7月23日

#28 in #testing-framework

Download history 447/week @ 2024-03-14 543/week @ 2024-03-21 410/week @ 2024-03-28 445/week @ 2024-04-04 454/week @ 2024-04-11 505/week @ 2024-04-18 504/week @ 2024-04-25 443/week @ 2024-05-02 467/week @ 2024-05-09 544/week @ 2024-05-16 367/week @ 2024-05-23 418/week @ 2024-05-30 409/week @ 2024-06-06 368/week @ 2024-06-13 563/week @ 2024-06-20 634/week @ 2024-06-27

2,065 每月下载量
用于 ansi_parser_extended

MIT 许可证

25KB
337

声明式测试框架

github crates.io docs.rs build status

Demonstrate 允许在 demonstrate! 宏中编写测试,而无需重复代码,该宏将生成相应的完整测试。

此测试库深受 speculate.rsruspec 的影响,这两个库都受到了 RSpec 的启发。

Demonstrate 使用以下新的代码块定义:

  • before/after — 在当前和嵌套的 describe/context 块的开始或结束时包含的源代码块。

  • describe/contextdescribecontext 是彼此的别名。指定一个新的测试范围,可以包含一个 before 和/或 after 块,嵌套的 describe/context 块,以及 it/test 块。这些转换为 Rust mod 块,但还可以定义共享的测试属性,例如测试具有外部属性、异步执行以及具有 Return<()> 类型。

  • it/testittest 是彼此的别名。代表一个测试,转换为 Rust 单元测试。


示例

use demonstrate::demonstrate;

fn is_4() -> u8 {
    4
}

demonstrate! {
    describe "module" {
        use super::*;

        before {
            let four = 4;
        }

        #[should_panic]
        it "can fail" {
            assert!(four != 4)
        }

        test "is returnable" -> Result<(), &'static str> {
            if is_4() == four {
                Ok(())
            } else {
                Err("It isn't 4! :o")
            }
        }

        #[async_attributes::test]
        async context "asynchronous" {
            before {
                let is_4_task = async_std::task::spawn(async {
                    is_4()
                });
            }

            it "awaits" {
                assert_eq!(four, is_4_task.await)
            }
        }
    }
}

许可证

根据 MIT 许可证 授权。

依赖

~7.5MB
~164K SLoC