我一直在尝试使用 cabal-install 作为构建的一种方式,更重要的是,测试我的 haskell 项目,有点像 Maven 在 Java 项目中的使用方式,主要是因为它似乎也是一种很好的方式集成在Jenkins或ci左右,从某种意义上说似乎非常可靠,您不需要设置开发环境等来检查和确认代码是否正在编译和正确与否。
无论如何,我为此使用 QuickCheck 和 HUnit。在另一篇文章here在堆栈交换中,我找到了一种集成 HUnit 和 cabal 的好方法,方法是使用 Distribution.TestSuite.HUnit 中的函数 test 在我的测试模块中创建一个公开的测试数组。作品。
我尝试使用快速检查进行相同的设置,
import qualified Distribution.TestSuite.QuickCheck2 as CabalQuickCheck
alwaysFalseOneArg::Int->(Int,Int)
alwaysFalseOneArg x = (x,x)
quickCheckPropOneArg = \s->let (a,b)=alwaysFalseOneArg s in a==b && a/=b
cabalQCTest = CabalQuickCheck.test "test" quickCheckPropOneArg
tests=cabalQCTest:[]
我想看到这个测试失败。
我拥有的 cabal 文件与 HUnit 设置一起使用,HUnit 测试运行和失败或不失败,因为它们应该。但是,如果我使用相同的设置来执行快速检查测试,cabal 告诉我它确实找到了一个测试套件,但其中没有测试。我尝试了 site 中提到的方法Distribution.TestSuite.QuickCheck2 也是如此,但他们似乎没有提到如何公开测试,我似乎也没有设法让它运行。我现在有点不知所措,我可以使用 quickcheck 本身而不是 cabal 运行这些快速检查测试,我希望能够快速验证我的所有测试和代码并在 Jenkins 左右使用它。有人有想法吗?
我试图提供我认为必要的所有信息,而不会过于复杂,所以我没有发布完整的 cabal 文件等等,如果有必要,我当然会这样做。我发现了很多类似的帖子,但其中大多数归结为使用除了 detail-0.9 之外的其他东西,这将是一个遗憾,因为它似乎与 HUnit 一起工作得很好,我想同时使用 HUnit 和 QuickCheck当然,以同样的方式,最好公开一个包含 HUnit 和 QuickCheck 测试的测试数组。
卡斯帕
最佳答案
我同意 isturdy : 我肯定会去 test-framework
+ test-framework-quickcheck2
.查看 this example如何在项目中一起使用它们。请注意名为 prop_*
的属性。 .
您也可以查看项目 haskell-minecraft-tool
查看测试输出的样子。运行测试
cabal configure --enable-tests && cabal build && cabal test
看
.cabal
在此处提交文件以查看需要哪些软件包。即这些是test-framework
, test-framework-quickcheck2
, QuickCheck
.
关于Haskell Cabal QuickCheck 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15039285/