首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异常情况下基于属性的测试

异常情况下基于属性的测试
EN

Stack Overflow用户
提问于 2014-03-03 21:47:10
回答 1查看 292关注 0票数 2

我正在为我的本地函数式编程组写一篇关于Haskell的简介。作为一个基础,我使用美味测试框架,我想测试索引函数(!!)

MinimalExample.hs

代码语言:javascript
复制
module MinimalExample where

myIndex :: Int -> [a] -> a                                               
myIndex _ [] = error "index too large"                                   
myIndex 0 (x:_) = x                                                      
myIndex n (_:xs) = myIndex (n-1) xs                                      

MinimalTests.hs

代码语言:javascript
复制
module MinimalTests where

import Test.Tasty
import Test.Tasty.SmallCheck as SC
import Test.SmallCheck.Series

import MinimalExample

main :: IO ()
main = defaultMain tests

tests :: TestTree
tests = testGroup "Tests" [scProps]

scProps ::  TestTree
scProps = testGroup "(checked by SmallCheck)"
  [ SC.testProperty "(!!) == myIndex" $ \lst n ->
      lst !! n == myIndex (n::Int) (lst::[Int])
  ]

测试不应在“太大的索引”上失败,因为错误/异常是相同的。

对于负输入,测试应该失败--可以通过添加NonNegative作为输入的约束,或者在myIndex-function中添加相应的子句来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2015-02-05 14:47:59

您可以使用勺子包,或者编写一个类似的函数,如果要测试异常是否相同,则返回异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22158159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档