我希望能夠採取一個文件,宣言,如:獲取模板haskell中的對象名稱列表?
test_1 = assert $ 1 == 1
test_2 = assert $ 2 == 1
,並生成一個基本的運行功能像
main = runTests [test_1, test2]
的目標是要達到這樣的Python的nosetest。
我可以用模板Haskell做這個嗎?我找不到很多文檔(Wiki中有很多斷開的鏈接)。
我希望能夠採取一個文件,宣言,如:獲取模板haskell中的對象名稱列表?
test_1 = assert $ 1 == 1
test_2 = assert $ 2 == 1
,並生成一個基本的運行功能像
main = runTests [test_1, test2]
的目標是要達到這樣的Python的nosetest。
我可以用模板Haskell做這個嗎?我找不到很多文檔(Wiki中有很多斷開的鏈接)。
您可能想要查看test-framework軟件包系列。特別是,test-framework-th軟件包提供了模板Haskell功能defaultMainGenerator
,只要您按照case_
和QuickCheck屬性prop_
的前綴HUnit測試用例的慣例,它就完全符合QuickCheck和HUnit測試的要求。
{-# LANGUAGE TemplateHaskell #-}
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2
import Test.Framework.TH
import Test.HUnit
import Test.QuickCheck
main = $(defaultMainGenerator)
case_checkThatHUnitWorks =
assert $ 1 == 1
prop_checkThatQuickCheckWorks =
(1 == 1)
還有一種方法,你不必使用模板haskell。 haskell-src-exts可以解析Haskell,你可以從中提取。
或者,如果你的目的是可行的,可以作出這樣quickcheck
,做一個頭腦簡單的解析,即尋找與prop_
在0。這是真正的工作完全適當的解決方案列開始的標識符,儘管它可能是理論上不令人滿意。
你需要什麼模板Haskell在這裏? `runTests`是一個完美的普通函數;是能夠編寫`$(runTestsInModule「My.Module」)併產生`runTests [test_1,test_2,...]`的想法嗎? – 2010-12-05 21:18:38
是的! runTestsInModule是一個存在的函數還是我需要編寫它?如果不是,那是我想知道如何寫的功能。 – luispedro 2010-12-05 21:22:35