6 个版本

0.1.0 2022年9月6日
0.1.0-dev.42022年8月19日
0.1.0-dev.32022年8月16日
0.1.0-dev.12022年8月15日

测试 中排名第 442

Download history 454/week @ 2024-03-14 636/week @ 2024-03-21 319/week @ 2024-03-28 604/week @ 2024-04-04 647/week @ 2024-04-11 599/week @ 2024-04-18 893/week @ 2024-04-25 607/week @ 2024-05-02 436/week @ 2024-05-09 728/week @ 2024-05-16 554/week @ 2024-05-23 619/week @ 2024-05-30 602/week @ 2024-06-06 537/week @ 2024-06-13 669/week @ 2024-06-20 409/week @ 2024-06-27

每月下载量 2,333
用于 8 个 crates (3 直接)

MIT 许可证

15KB
176

Isotest 启用非常具体的 Rust 单元测试模式。

假设您有一些在许多地方使用的数据类型。您可能希望编写一些操作这些复杂数据类型的函数,但这些函数只需要知道该数据类型的一小部分。在包含处理该数据类型子集的方法的 trait 上泛化这些函数可能更方便,而不是直接使用完整的数据类型。

这样做有几个关键优势。使用 trait 可以隐藏无关的细节,使函数的关心范围仅限于它需要知道的内容。这是最小权限原则的良好应用。

使用 trait 还使得编写测试更加容易。如果我们使用完整的数据类型,我们需要创建带有大量无关任意数据的测试用例,而这些数据甚至不会影响测试中的函数。通过使用 trait,我们可以编写一个实现相同 trait 的更简单的测试专用数据结构,并在测试中使用该结构而不是复杂的“真实”数据类型。这使测试更加简单,并避免了生成大量任意废弃数据的需求。

此外,在调试失败的测试时,更容易仅获取我们关心的数据的调试输出,而不是包含在调试输出中的真实数据结构的所有噪音。

这种方法唯一的担忧是我们没有测试“真实”数据,如果我们的测试数据类型或其公共 trait 的实现有任何问题,我们可能不会测试我们以为正在测试的内容。这就是 isotest 出现的地方。

isotest 通过允许用户定义将测试数据类型转换到和从的功能,并提供了具有简单API的宏来运行两种类型的测试,有助于确保我们实现的公共特性是正确的。用户可以用更简单的测试数据来编写测试,然后该测试会针对测试数据和真实数据同时运行,以确保特性实现中隐含的假设没有错误。因此,您在简化测试编写的同时,仍然可以用真实数据测试您的逻辑。

依赖项

~135KB