您目前看到的代码片段都没有显示随机测试功能,因为它们被小心隐藏在hood下。 但是,当您编写自己的测试时,您也应该使用这些功能。 在开始之前,您应该要知道,如何重复使用相同设置的失败测试,如何失败的。 幸运的是,这很容易,因为整个mvn调用与失败的测试都将一起记录,这意味着你可以简单地复制和粘贴该行并运行测试。
下一步是把使用静态测试数据的测试,转换为使用随机测试数据的测试。您可以随机化的数据类型与您正在测试的功能有很大的不同。看看下面的例子(注意,这个列表可以继续页面,因为分布式系统有许多很多移动的部分):
使用任意UTF8符号搜索数据 每次运行时更改映射配置,索引和字段名称 每次运行时更改响应大小/可配置限制 创建索引时更改碎片/副本的数量 那么,你如何创建随机数据。最重要的事情是,你不应该实例化自己的随机实例,而是使用随机化测试中提供的随机实例,所有弹性搜索依赖测试类都从该实例继承。
| getRandom()
| 返回随机实例,可以在使用特定参数调用测试时重新创建 |
| randomBoolean()
| 返回随机布尔值 |
| randomByte()
| 返回一个随机字节 |
| randomShort()
| 返回随机短 |
| randomInt()
| 返回一个随机整数 |
| randomLong()
| 返回一个随机长 |
| randomFloat()
| 返回随机浮点数 |
| randomDouble()
| 返回一个随机的double |
| randomInt(max)
| 返回0和max之间的随机整数 |
| between()
| 返回提供的范围之间的随机值 |
| atLeast()
| 返回至少为指定整数的随机整数 |
| atMost()
| 返回最多指定整数的随机整数 |
| randomLocale()
| 返回随机区域设置 |
| randomTimeZone()
| 返回随机时区 |
| randomFrom()
| 从列表/数组返回一个随机元素 |
此外,还有几种帮助方法,可以创建随机ASCII和Unicode字符串,请参阅随机测试类中以randomAscii,randomUnicode和randomRealisticUnicode开头的方法。后者尝试通过非任意随机创建更真实的unicode字符串。
如果要调试特定随机种子的特定问题,可以使用@Seed注释配置特定种子进行测试。如果要多次运行测试,而不是重复启动整个测试套件,可以使用@Repeat注释和任意值。每次迭代都不同于使用不同的种子运行。