2012-04-26 26 views
8

QuickCheck hayranıyım olmak tüm quickChecks, benim program boyuncaotomatik

prop_something_something = ... 

çok şey var toplamak. kolaylık sağlamak için

, kolayca hepsini çalıştırmak için, ben

runchecks = do 
    quickCheck prop_something_something 
    quickCheck prop_something_different 

tanımlamak ancak runchecks oluşturmak için güzel bir yol var?

TL; DR: Bir dosyadaki tüm quickChecks dosyalarını kolayca çalıştırmak istiyorum. Bir yolun test edilebilir testler ile test_ ya da benzer birşeklinin önüne geçmesinin bir yolu olduğunu sanırım, ama bu çok rahatsız edici olabilir.

cevap

7

Bunu, test-framework-th paketi ile yapabilirsiniz. Sadece yapın:

import Test.Framework.TH 
import Test.Framework.Providers.QuickCheck2 
runchecks = $(defaultMainGenerator) 

Bu testlerini gerçekleştirme test-framework yolunu kullanacağız, size basitçe çoğu zaman iyi bir şeydir, peş peşe testleri çalıştırarak alacağı biraz daha fazla bilgi alırsınız yani .

Bunun çalışması için etkin olması için TemplateHaskell'a ihtiyacınız var; veya Cabal dosyanıza Default-extensions: TemplateHaskell ekleyin ya da dosyanın üstüne {-# LANGUAGE TemplateHaskell #-} ekleyin.

+0

Sadece bunu ekleyerek şu hatayı alıyorum: http://hpaste.org/67672 - başka değişiklikler yapmak zorunda mıyım? İsterseniz daha fazla kod yapıştırırım. –

+0

Görünüşe göre, 'QuickCheck2' sağlayıcı modülünü de dahil etmelisiniz, bu da sanırım mantıklı geliyor. Daha fazla bilgi için güncellenmiş yanıtıma bakın. – dflemstr

+0

Evet, import.Framework.Providers.QuickCheck2 import dosyasını ekledim. Teşekkürler. :) –

8

Ekstra not: Bu işlevsellik, QuickCheck 2'deki kutudan çıkar, ayrıca Test.QuickCheck.All ve TemplateHaskell öğelerinin içe aktarılmasını gerektiren quickCheckAll işlevine bakın. quickCheckAll, adınız prop_ ile başlayan modülünüzdeki tüm işlevleri sınar.