标签: htf

用HTF测试

在HTF上有一个令人难以置信的缺乏体面的文档.我所能找到的只是一个教程,它没有提供以下任何真正重要的信息:

  1. 如何创建一个自动执行包中所有测试的测试套件?
  2. 究竟什么是HTF的"黑盒测试",我该如何创建它们?
  3. 基于HTF(源根,包和模块结构,cabal)设置测试套件的实际标准是什么?

testing haskell htf

15
推荐指数
1
解决办法
956
查看次数

HTF不测试TH生成的道具

我想在我的库中对各种类型进行一些类似的测试.

为简化起见,假设我有许多实现Num类的向量类型,并且我想生成相同的QuickCheck属性检查prop_absNorm x y = abs x + abs y >= abs (x+y),该检查可以对库中的所有类型起作用.

我使用TH生成这样的属性:

$(writeTests
    (\t ->
        [d| prop_absNorm :: $(t) -> $(t) -> Bool
            prop_absNorm x y = abs x + abs y >= abs (x+y)
        |])
 )
Run Code Online (Sandbox Code Playgroud)

我生成测试的函数具有以下签名:

writeTests :: (TypeQ -> Q [Dec]) -> Q [Dec]
Run Code Online (Sandbox Code Playgroud)

此函数查找我的矢量类的所有实例VectorMath (n::Nat) t(以及同时的实例Num)reify ''VectorMath并相应地生成所有prop函数. -ddump-splices显示这样的事情:

prop_absNormIntX4 :: Vector 4 Int -> Vector 4 Int -> Bool
prop_absNormIntX4 x y = …
Run Code Online (Sandbox Code Playgroud)

haskell quickcheck template-haskell htf

5
推荐指数
1
解决办法
135
查看次数

用Cabal安装HTF的麻烦

我正在尝试安装HTF.但是在cabal install HTF我得到这个之后:

Resolving dependencies...
Configuring HTF-0.10.0.7...
Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure.
package regex-base-0.93.2 requires mtl-2.0.1.0
package aeson-0.6.0.2 requires mtl-2.1.2
package HTF-0.10.0.7 requires mtl-2.1.2
package mtl-2.0.1.0 requires transformers-0.2.2.0
package transformers-base-0.4.1 requires transformers-0.3.0.0
package mtl-2.1.2 requires transformers-0.3.0.0
package monad-control-0.3.1.4 requires transformers-0.3.0.0
Building HTF-0.10.0.7...
Preprocessing library HTF-0.10.0.7...
ghc: could not execute: cpphs
cabal: Error: some packages failed to install:
HTF-0.10.0.7 failed during the building …
Run Code Online (Sandbox Code Playgroud)

haskell ghc cabal htf

4
推荐指数
1
解决办法
1020
查看次数

标签 统计

haskell ×3

htf ×3

cabal ×1

ghc ×1

quickcheck ×1

template-haskell ×1

testing ×1