In der Scalacheck documentation für Stateful Testing wird eine ATM-Maschine als Anwendungsfall erwähnt. Damit es funktioniert, benötigen die Befehle Parameter, zum Beispiel die PIN oder die Auszahlungsmenge. Im angegebenen Beispiel haben die Methoden in der Klasse Counter
keine Parameter.Scalacheck - Parameter zu Befehlen hinzufügen
Nun meine Frage ist, wie ich eine Methode, wie dies in scalachecks Stateful-Tests testen konnte:
class Counter {
private var n = 0
def inc(i: Int) = n += i
...
}
Die run
und nextState
Methoden eines Befehls einen Parameter nicht bieten. Hinzufügen eines Random.nextInt
nicht funktionieren würde, weil in run
und nextState
der Wert würde sich unterscheiden und der Test nicht bestanden:
case object Inc extends UnitCommand {
def run(sut: Sut): Unit = sut.inc(Random.nextInt)
def nextState(state: State): State = state + Random.nextInt
...
}
Gibt es eine Möglichkeit, einen Parameter zu dem Sut
passieren?
Danke, das sieht nach der Lösung aus, nach der ich gesucht habe! – amuttsch