测试 spring junit 时创建随机字符串的最佳做法是什么?

What is the best practice for creating random strings when testing spring junit?

测试 spring junit 时创建随机字符串的最佳做法是什么?

在用 junit 编写测试时,我在创建随机字符串时使用了下面的代码。

UUID.randomUUID().toString().substring(0, 20)

此代码的缺点是它不能超过 32 个字符的 UUID 的最大长度。

我相信一定有比上面代码更好的方法。

我想知道 return 随机字符串的最佳做法是什么。

此致!

使用 Java 8 你可以使用 Random().ints(97, 123) 生成一个随机的 a-z 字符字符串,这是可行的,因为字符 a 表示为 97 并且z 表示为 122.

然后我们可以使用.collect(...)将字符从随机转换为字符串。

代码总的来说是这样的:

int yourStringLength = 40;
String generatedString = new Random().ints(97, 123)
    .limit(yourStringLength)
    .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
    .toString();

生成的字符串看起来有点像这样:

okphrralxtqywxgfnolloyiqfjlgputyzprpbwsr

如果您还想包含空格,那么只需在 96 处开始 .ints(...),这是 ` 字符,并在生成后将其替换为空格:

String generatedString = new Random().ints(97, 123)
    .limit(yourStringLength)
    .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
    .toString();
generatedString = generatedString.replaceAll("`", " ");

生成的字符串看起来有点像这样:

ayowotibx sotvonazpm vjnyobdkzajfckutswu

如果你想要更多的空格来表示真实的单词长度,那么你可以更早地开始 .ints(...) 或推出顶端,并根据需要替换字符,例如 ints(96, 123)也替换 generatedString = generatedString.replaceAll("_", " "); 结果将是这样的:

hrqobe rufmcknwobzyh whaimaxgjsjg nyxcx