10

我一直在尝试使用 cabal-install 作为一种构建方式,更重要的是,测试我的 haskell 项目,有点类似于 Maven 在 Java 项目中的使用方式,主要是因为它似乎也是一种很好的方式集成在 Jenkins 或者 ci 左右,从某种意义上来说似乎非常可靠,您不需要设置开发环境等来检查和确认代码是否正在编译和正确与否。

无论如何,我为此使用 QuickCheck 和 HUnit。在关于堆栈交换的另一篇文章 ,我发现了一种集成 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 告诉我它确实找到了一个测试套件,但其中没有测试。我也尝试了 Distribution.TestSuite.QuickCheck2网站上提到的方法,但是他们似乎没有提到如何公开测试,我似乎也无法让它运行。我现在有点不知所措,我可以使用 quickcheck 本身而不是 cabal 运行这些快速检查测试,我希望能够快速验证我的所有测试和代码并在 Jenkins 左右使用它。有人有想法吗?

我试图提供我认为必要的所有信息,而不会过于复杂,所以我没有发布完整的 cabal 文件等等,如果有必要,我当然会这样做。我发现了很多类似的帖子,但其中大多数归结为使用除了 detail-0.9 之外的其他东西,这将是一个遗憾,因为它似乎与 HUnit 一起工作得很好,我想同时使用 HUnit 和 QuickCheck当然,以同样的方式,最好公开一个包含 HUnit 和 QuickCheck 测试的测试数组。

卡斯帕

4

1 回答 1

3

我同意isturdy的观点:我肯定会尝试test-framework+ test-framework-quickcheck2。查看如何在项目中一起使用它们的示例。注意名为 的属性prop_*

您还可以查看项目haskell-minecraft-tool以查看测试输出的样子。运行测试

cabal configure --enable-tests && cabal build && cabal test

查看.cabal此处的文件以了解需要哪些软件包。即这些是 test-framework, test-framework-quickcheck2, QuickCheck

于 2013-06-21T03:08:55.797 回答