6 个版本
0.1.0 | 2022年9月6日 |
---|---|
0.1.0-dev.4 | 2022年8月19日 |
0.1.0-dev.3 | 2022年8月16日 |
0.1.0-dev.1 | 2022年8月15日 |
在 测试 中排名第 442
每月下载量 2,333
用于 8 个 crates (3 直接)
15KB
176 行
Isotest 启用非常具体的 Rust 单元测试模式。
假设您有一些在许多地方使用的数据类型。您可能希望编写一些操作这些复杂数据类型的函数,但这些函数只需要知道该数据类型的一小部分。在包含处理该数据类型子集的方法的 trait 上泛化这些函数可能更方便,而不是直接使用完整的数据类型。
这样做有几个关键优势。使用 trait 可以隐藏无关的细节,使函数的关心范围仅限于它需要知道的内容。这是最小权限原则的良好应用。
使用 trait 还使得编写测试更加容易。如果我们使用完整的数据类型,我们需要创建带有大量无关任意数据的测试用例,而这些数据甚至不会影响测试中的函数。通过使用 trait,我们可以编写一个实现相同 trait 的更简单的测试专用数据结构,并在测试中使用该结构而不是复杂的“真实”数据类型。这使测试更加简单,并避免了生成大量任意废弃数据的需求。
此外,在调试失败的测试时,更容易仅获取我们关心的数据的调试输出,而不是包含在调试输出中的真实数据结构的所有噪音。
这种方法唯一的担忧是我们没有测试“真实”数据,如果我们的测试数据类型或其公共 trait 的实现有任何问题,我们可能不会测试我们以为正在测试的内容。这就是 isotest
出现的地方。
isotest
通过允许用户定义将测试数据类型转换到和从的功能,并提供了具有简单API的宏来运行两种类型的测试,有助于确保我们实现的公共特性是正确的。用户可以用更简单的测试数据来编写测试,然后该测试会针对测试数据和真实数据同时运行,以确保特性实现中隐含的假设没有错误。因此,您在简化测试编写的同时,仍然可以用真实数据测试您的逻辑。
依赖项
~135KB