2012-11-26 35 views
4

我一直在使用ScalaCheck进行自动单元测试。它的默认字符串生成器(即其默认的Arbitrary[String]实例)有点太太强大了,通常会产生一个无法读取的混杂,主要由我不想支持的字符和我的系统甚至无法呈现的字符组成。在Java中随机生成*有趣的字符串

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

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

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

+1

马尔可夫链... – SLaks

回答

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只需查看翻译。

0

尝试

RandomStringUtils.random(10, true, false) 

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

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