2015-11-14 11 views
0

Я хочу запустить HUnit тесты внутри спецификации:Запуск HUnit тесты с Hspec

module SHCSpec (spec) 
    where 

import Test.Hspec 
import Test.Hspec.Contrib.HUnit 
import Test.HUnit 

import SHC.Types 
import SHC.Lix 


spec :: Spec 
spec = do 
    fromHUnitTest ("SHC.Lix" ~: "toHit" ~: 
     [ Irrelevant @=? toHit [] 
     , None  @=? toHit [False] 
     , None  @=? toHit [False, False] 
     , Partial @=? toHit [False, True] 
     , Partial @=? toHit [True, False] 
     , Partial @=? toHit [False, False, True] 
     , Partial @=? toHit [False, True, False] 
     , Partial @=? toHit [True, False, False] 
     , Full  @=? toHit [True] 
     , Full  @=? toHit [True, True] 
     ]) 

Приведенный выше код работает, но он производит этот уродливый вывод:

SHC 
    SHC.Lix 
    toHit 
     <unlabeled> 
     <unlabeled> 
     <unlabeled> 
     <unlabeled> 
     <unlabeled> 
     <unlabeled> 
     <unlabeled> 
     <unlabeled> 
     <unlabeled> 
     <unlabeled> 

Можно ли приложить метку toHit на каждый тестовый пример? Что-то вроде этого:

SHC 
    SHC.Lix 
    toHit 
    toHit 
    toHit 
    toHit 
    toHit 
    toHit 
    toHit 
    toHit 
    toHit 
    toHit 

Еще лучше было бы, чтобы добавить номер к каждому toHit случае. Я испортил TestList и map TestLabel безрезультатно.

+0

насчет 'карты («TohiT» ~:) '? Я не тестировал его, но похоже, что это сработает. – user2407038

ответ

1

Как насчет крепления этикетки для всех тестов с помощью функции, как:

label ts = 
    [ show i ~: t | (i,t) <- zip [(1::Int)..] ts ] 

Просто префикс списка тестов с вызовом label:

spec :: Spec 
spec = do 
    fromHUnitTest ("SHC.Lix" ~: "toHit" ~: 
     label 
     [ Irrelevant @=? toHit [] 
     , None  @=? toHit [False] 
     ... 
+0

Да, я сделал что-то очень похожее на это! – rubik