10

Scala 用に書き直された specs2テスト フレームワークは、自動テストをscalacheckと統合します。scalacheck を specs2 と一緒に使用する方法に関する specs2 のドキュメントに記載されている例では、整数を使用するか、 eric の json の例のように、より複雑なカスタム ジェネレーターを使用します。

少し複雑でない例を機能させようとしている間、整数の代わりに文字列引数を生成したい場合に specs2 と scalacheck を使用する方法がわからないため、苦労しています。このクイックスタートの例はどのように


import org.scalacheck._

object StringSpecification extends Properties("String") { property("startsWith") = Prop.forAll((a: String, b: String) => (a+b).startsWith(a))

property("endsWith") = Prop.forAll((a: String, b: String) => (a+b).endsWith(b))

// Is this really always true? property("concat") = Prop.forAll((a: String, b: String) => (a+b).length > a.length && (a+b).length > b.length )

property("substring") = Prop.forAll((a: String, b: String) => (a+b).substring(a.length) == b )

property("substring") = Prop.forAll((a: String, b: String, c: String) => (a+b+c).substring(a.length, a.length+b.length) == b ) }

scalacheck のホームページの外観から取得しましたが、scalacheck 統合を使用して Specs2 仕様として記述されている場合は?

4

2 に答える 2

17

非常に直接的な翻訳は、checkメソッドと単純な関数を使用しています。

package test

import org.specs2._
import org.scalacheck._

class ScalaCheckExamples extends Specification with ScalaCheck { def is =

  "startsWith" ! check { (a: String, b: String) => (a+b).startsWith(a) }                                                ^
  "endsWith"   ! check { (a: String, b: String) => (a+b).endsWith(b) }                                                  ^
  "concat"     ! check { (a: String, b: String) => (a+b).length > a.length && (a+b).length > b.length }                 ^
  "substring"  ! check { (a: String, b: String) => (a+b).substring(a.length) == b }                                     ^
  "substring"  ! check { (a: String, b: String, c: String) => (a+b+c).substring(a.length, a.length+b.length) == b }     ^
                                                                                                                        end
 }

そして、出力は実際にconcatプロパティが正しくないことを示しています:

  [info] + startsWith
  [info] + endsWith
  [error] x concat
  [error]   A counter-example is ['', ''] (after 0 try)
  [error] the value is false
  [error]  (ScalaCheckExamplesSpec.scala:6)
  [info] + substring
  [info] + substring
  [info]
  [info] Total for specification ScalaCheckExamplesSpec
  [info] Finished in 7 seconds, 547 ms
  [info] 5 examples, 401 expectations, 1 failure, 0 error
  [info]

エリック。

于 2011-06-07T23:08:48.230 に答える
2

Specs2 での ScalaCheck ライブラリの使用に関する詳細については、specs2 ドキュメントの ScalaCheck ガイドを参照してください

于 2012-02-09T18:33:27.233 に答える