Ich möchte, dass alle meine Eigenschaften immer mit mindestens einem festen Satz spezieller Werte zusätzlich zu einigen zufälligen Werten getestet werden. Ich möchte dies in meiner Generatorspezifikation definieren, nicht in jedem Test, der diesen Generatortyp verwendet. Wenn ich zum Beispiel Ints erzeuge, möchte ich, dass mein Generator immer mindestens 0, 1 und -1 für jeden Testfall generiert. Ist das möglich?
Das Beste, was ich mir bisher ausgedacht habe, ist, einen großen Generator zu erstellen, bei dem die kleinsten n Größen meinen n Sonderfällen entsprechen. Dies ist zumindest dann problematisch, weil alle möglichen Größen nicht getestet werden, wenn die maximale Anzahl der Tests so konfiguriert ist, dass sie niedriger als der Parameter für die maximale Größe ist.
Zunächst ist bereits eine Verzerrung in Scalacheck, so dass 0, 1, -1, Int.MaxValue
und Int.MinValue
sehr wahrscheinlich zusätzlich zu anderen Int
ausgewählt werden. Werte. Also, wenn das deine Sorge ist, mach dir keine Sorgen darüber. Ebenso werden wahrscheinlich leere Strings generiert.
Wenn Sie dieses Verhalten jedoch für etwas anderes reproduzieren möchten, verwenden Sie Gen.oneOf
oder Gen.frequency
, möglicherweise in Verbindung mit Gen.choose
. Da oneOf
und frequency
als Parameter Gen
annehmen, können Sie Sonderfälle mit generischen Generatoren kombinieren.
Zum Beispiel:
%Vor%Hat ziemlich genau das, wonach Sie gefragt haben, mit einer Wahrscheinlichkeit von 50% für willkürliche Ints (die mit der Voreingenommenheit, von der ich gesprochen habe, kommen) und 16,6% für jede von -1, 0 und 1.
Tags und Links scala scalacheck