好吧,我有多個測試用例設置,然後將它們組合在一起。 我忘了把一些代碼了,所以我說這當我在Haskell中運行測試時,我的輸出即將出現
的問題是,當我把例如主要>測試1顯示出正確的答案,但如果我嘗試單獨運行測試用例如主> TEST0我的輸出變成 「測試用例_」
或主> ALLTESTS我出放是「TestList [TestLabel TEST1測試用例_,TestLabel TEST0測試用例_,TestLabel TEST7測試用例_,TestLabel est51測試用例_ ]「
我的問題是什麼原因引起的_爲什麼是不是認識測試用例
assertException :: (Exception e, Eq e) => e -> IO a -> IO()
assertException ex action =
handleJust isWanted (const $ return()) $ do
action
assertFailure $ "Expected exception: " ++ show ex
where isWanted = guard . (== ex)
assertError ex f =
assertException (ErrorCall ex) $ evaluate f
tests :: Integer -> [Integer]
tests n | n == 0 = error "Not positive"
| n == 1 = [1]
| (n `div` 2 == 0) = n:tests(n*2)
| otherwise = n:tests(3*n)
test0 =
TestCase (assertError
"tests 0"
(tests 0)
)
test7 =
TestCase (assertEqual
"tests 7"
[7,18,9]
(tests 7)
)
test51 =
TestCase (assertEqual
[9,8,9]
"tests 51"
(tests 51)
)
alltests =
TestList [
-- TestLabel "test1" test1
TestLabel "test0" test0
, TestLabel "test7" test7
, TestLabel "test51"test51
]
「當我在這裏複製時忽略了一些間距,它沒有出來」 - 這是一個不好的跡象。你在源代碼中使用了標籤嗎?如果是這樣,不要。使用製表符,看起來正確縮進的代碼可以完全被刪除。 –
測試用例間距在我的程序中是正確的,測試用例是作爲模板給出的,我必須在其中編寫代碼。我的代碼與測試用例沒有配合,就好像它不能識別測試用例中的ex:(測試51)部分 – Watts
這只是一般性建議。如果您的縮進實際上已被選項卡打破,您將收到錯誤消息。 –