我使用Kotest data generators进行测试,它非常灵活,几乎可以做任何事情。然而,字符串生成器非常技术性,很坚韧用它们生成真实的文本字符串。
例如,使用可打印的ASCII字符(``到~
)生成字符串与真实的世界的用例相差甚远,甚至与真实的世界的ASCII输入也相差甚远,因为没有包含换行符和制表符。在真实的真实的世界中,可以在具有各种语言设置的浏览器中创建各种UTF-8字符。
在Kotest中有stringPattern
生成器,但它使用RxGen 1.4,RxGen 1.4还不支持基于字符类的生成(1.5版正在等待中)。否则我会说[\p{Punct}]|[\p{Graph}]|[\p{Print}]|[\p{Blank}]
是我的想法,但我对Unicode字符类一无所知,我觉得现有的解决方案比自己解决这个问题要好得多。
我在一个Kotlin1.9的项目中使用Kotest 5.8.0。
2条答案
按热度按时间gj3fmq9x1#
如果存有可以通过作为真实的世界文本为你,这是很容易用途:
个字符
来源:https://github.com/mdeanda/lorem
sdnqo3pr2#
另一个选择是使用jqwik的String生成器。它们可以在jqwik属性方法之外使用。
下面是一个例子:
字符串
如何直接使用jqwik的生成器(又称仲裁器)在用户指南的这一部分有详细说明。
完全披露:我是jqwik的主要提交者