2016-08-11 10 views
0

Я недавно использовал платформу тестирования HUnit для запуска тестов в haskell.PutText in haskell HUnit

Я столкнулся с этой функцией PutText и runTestText, которая принимает PutText st в качестве первого аргумента.

Однако я не уверен, как использовать это и хотел бы помочь в понимании того, как это использовать?

ответ

1

Сообщено о значении PutText, которое позволяет настроить способ сообщения, генерируемого при запуске теста.

Простым способом создания одного является использование putTextToHandle stdout True для вывода сообщений на стандартный выход. Параметр True означает также излучение сообщений о ходе выполнения.

Протокол PutText позволяет вам поддерживать состояние. Это пример того, который отслеживает количество исходящих сообщений. Конечное значение этого состояния также возвращается runTestText в качестве второго компонента возвращенного кортежа.

reportMsg :: String -> Bool -> Int -> IO Int 
reportMsg message isProgress count = do 
    putStrLn $ "#" ++ show (count+1) ++ ": " ++ message 
    return (count+1) 

myPutText = PutText reportMsg 0 :: PutText Int 

И тогда вы можете использовать его как это:

(testCounts, msgCount) <- runTestText myPutText tests 
putStrLn $ "Messages emitted: " ++ show msgCount 

Здесь testCounts является подсчет количества тестов, которые были запустить/прошел/не удалось/и т.д. msgCount это значение, возвращаемое последний вызов функции PutText.

+0

Спасибо, мне было интересно, какая цель служит аргументу bool? – Zubair

+0

Указывает, является ли сообщение сообщением «прогресс». Я предполагаю, что сообщаю количество выполненных тестов. – ErikR

+0

Всякий раз, когда я пытаюсь использовать его, он всегда оказывается ложным. Я не уверен, почему, какие-то идеи? – Zubair