Najlepsze praktyki Haskell QuickCheck (zwłaszcza podczas testowania klas typów)

Właśnie zacząłem używać QuickCheck z kilkoma kodami Haskell. Wiem, że jestem za czasami. To pytanie ma dwie strony:

Po pierwsze, jakie są ogólne najlepsze praktyki Quick Check? Do tej pory wybrałem następujące:

Nazwij swoje testy prop_ * (denerwujące, ponieważ wszystko inne to CamelCase)Przetestuj wyeksportowany kod (jeśli testujesz elementy wewnętrzne, prawdopodobnie robisz to źle)Właściwości testowe, a nie przykładyNie mówX is out of range, Y is in rangeZamiast tego powiedzmyif x is out of range, normalize x ≠ x (lub jakąś inną taką własność)

Ale nadal chwytam się innych najlepszych praktyk. Szczególnie:

Gdzie są przechowywane nieruchomości?Ten sam plik?wtest/ informator? (Jeśli tak, to w jaki sposób importujesz rzeczysrc/?)wProperties/ katalog podsrc?

Co najważniejsze, jak mamy tendencję do testowania właściwości klas klas? Rozważmy na przykład następującą (uproszczoną) klasę typu:

<code>class Gen a where
    next :: a -> a
    prev :: a -> a
</code>

Chciałbym przetestować nieruchomość∀ x: prev (next x) == x. Oczywiście wymaga to pisania testów dla każdej instancji. Nudne jest pisanie tej samej właściwości dla każdej instancji, zwłaszcza gdy test jest bardziej skomplikowany. Jaki jest standardowy sposób generalizowania takich testów?

questionAnswers(3)

yourAnswerToTheQuestion