4

我一直在使用 ScalaCheck 进行自动单元测试。它的默认字符串生成器(即它的默认Arbitrary[String]实例)有点强大了,通常会产生一个不可读的混乱,主要由我不想支持的字符组成,我的系统甚至无法渲染。

我已经着手创建更多Arbitrary[String]实例,并试图找出那里有什么。以下是一些有助于测试的 String 类示例:

  • 基本多语言平面字符串
  • 星光弦
  • 拉丁字符串(包括扩展 a/b)
  • 法语单词
  • 从左到右的语言字符串
  • 从右到左的语言字符串
  • 中文句子
  • “网络字符串”(从构成网络内容 99.9999% 的字符集中提取的字符串)
  • 动用你的想象力 ...

是否有可以随机生成这些或类似字符串的库?

4

2 回答 2

1

我会采取不同的方法。您的所有示例都映射到 Unicode 中的字符块。请参阅http://www.fileformat.info/info/unicode/block/index.htm只需选择您喜欢的块,然后生成限制在这些范围内的随机字符串。

int count = 10;
StringBuilder out = new StringBuilder();
Random rand = new Random(0);
for (int i = 0; i < count; i++) {
  char ch = rand.nextInt(numCharsInRange) + firstCharInRange;
  out.append(ch);
}
return out.toString();

另一种方法是从不同语言中随机抓取预先编写的文本片段。你可以在这里获取一些:http ://www.unicode.org/standard/WhatIsUnicode.html看看翻译。

于 2012-11-26T22:28:38.450 回答
0

尝试

RandomStringUtils.random(10, true, false)

参数如下:int count, boolean letters, boolean numbers

您将需要导入org.apache.commons.lang.RandomStringUtils;

于 2012-11-26T22:34:48.743 回答