生成可以由 ScalaCheck 中的特定字符集编码的字符串
Generating Strings which can be encoded by a specific Charset in ScalaCheck
在我的 ScalaTest 测试中,我需要可以用 US-ASCII 编码的字符串。在使用默认的字符串生成器生成字符串后,我尝试检查它是否可以在该字符集中编码:
forAll { str: String =>
StandardCharsets.US_ASCII.newEncoder().canEncode(str) ==> {
// my test code is here
}
}
但我得到一个错误:
Gave up after only 8 passed tests. 501 tests were discarded.
有没有简单的方法来生成可以用特定字符集编码的字符串?
您可以创建一个只生成有效字符的生成器
val usAsciiStringGen = Gen.containerOf[Array, Char](Gen.choose[Char](0,127)).map(_.mkString)
然后在测试中使用它:
val prop = forAll(usAsciiStringGen) { str: String =>
...
}
请注意,实际上不再需要检查,因为只会生成 US Ascii 字符串。
在我的 ScalaTest 测试中,我需要可以用 US-ASCII 编码的字符串。在使用默认的字符串生成器生成字符串后,我尝试检查它是否可以在该字符集中编码:
forAll { str: String =>
StandardCharsets.US_ASCII.newEncoder().canEncode(str) ==> {
// my test code is here
}
}
但我得到一个错误:
Gave up after only 8 passed tests. 501 tests were discarded.
有没有简单的方法来生成可以用特定字符集编码的字符串?
您可以创建一个只生成有效字符的生成器
val usAsciiStringGen = Gen.containerOf[Array, Char](Gen.choose[Char](0,127)).map(_.mkString)
然后在测试中使用它:
val prop = forAll(usAsciiStringGen) { str: String =>
...
}
请注意,实际上不再需要检查,因为只会生成 US Ascii 字符串。