Właśnie zacząłem używać QuickCheck z kodem Haskella. Jestem w tyle, wiem. To pytanie jest dwuczęściowe: Najpierw, jakie są ogólne sprawdzone metody szybkiego sprawdzania? Do tej pory, ja podniósł następujące:Sprawdzone metody Haskell QuickCheck (szczególnie podczas testowania klas typów)
- imię Twój testy prop_ * (irytujące, ponieważ wszystko inne jest camelCase)
- test eksportowane kod (jeśli badanie wewnętrzne jesteś prawdopodobnie robi źle)
- Właściwości testowe, a nie przykłady
- nie mów
X is out of range, Y is in range
- Zamiast powiedzieć
if x is out of range, normalize x ≠ x
(lub jakąś inną nieruchomość)
- nie mów
Ale wciąż chwytam się innych najlepszych praktyk. W szczególności:
- Gdzie są przechowywane nieruchomości?
- Ten sam plik?
- w katalogu
test/
? (Jeśli tak, to w jaki sposób można zaimportować elementy w katalogusrc/
?) - w katalogupod numerem
src
?
Co najważniejsze, w jaki sposób mamy tendencję, aby przejść o badania właściwości na zajęciach typu? Na przykład, należy rozważyć następujące klasy (uproszczony) typ:
class Gen a where
next :: a -> a
prev :: a -> a
chciałbym przetestować właściwość ∀ x: prev (next x) == x
. Oczywiście wiąże się to z pisaniem testów dla każdej instancji. Nużące jest pisanie tej samej właściwości dla każdej instancji, szczególnie gdy test jest bardziej skomplikowany. Jaki jest standardowy sposób generalizowania takich testów?
Dla importu równoległego przy użyciu 'src /' i '' test/katalogów, będziemy chcieli, aby ustawić 'Hs-source-Dirs: src, test' w' .cabal' pliku tak, że oba katalogi znajdują się w ścieżce wyszukiwania modułów. – hammar
Dlaczego internals nie mają właściwości? – alternative
Z pewnością mogą, trudniej jest uzyskać dla nich testy i (z mojego doświadczenia) bardziej przydatne jest przetestowanie wyeksportowanego zachowania zamiast szczegółów implementacji. – So8res