【问题标题】:How to import modules for testing?如何导入模块进行测试?
【发布时间】:2020-05-20 13:34:19
【问题描述】:

我正在尝试使用 QuickCheck 为我的 Haskell 项目测试一些功能。我的目录目前如下所示:

|-cswk2
  |-validCard.hs //THIS FILE CONTAINS MY HASKELL FUNCTIONS 
  |-tests
    |-testSuite.hs //THIS FILE CONTAINS MY QUICKCHECK FUNCTIONS 

在我的 Haskell 文件中,我有一些要测试的函数,看起来像这样......

validCard.hs:

module Cswk2 where

getCard :: Integer -> [Integer]
...

...而我的测试文件看起来像这样。

testSuite.hs:

import Test.QuickCheck
import Test.HUnit
import Cswk2

prop_numb :: [Integer] -> Bool
...

不幸的是,我不断收到一条错误消息,提示“无法加载 Cswk2 的接口”,我想知道这是否是我构建测试目录的方式有问题。我最初尝试使用 cabal 并按照用户手册设置测试套件,但这会导致比这更多的问题,让我更加困惑。我是 Haskell 的新手,所以如果有人能指出我到底做错了什么并建议我如何构建一个测试项目,那将不胜感激?

【问题讨论】:

  • 您是如何准确构建这些文件的?我的意思是,分享您为构建而输入的确切命令。
  • @FyodorSoikin 运行测试我试图将 testSuit.hs 加载到 ghci 并在那里运行测试。不确定它是否正确,但这就是我之前使用 quickCheck 的方式
  • 你能分享一下命令的确切顺序吗?
  • @FyodorSoikin ghci testSuite.hs 然后我打算运行quickCheck prop_numb

标签: haskell testing import project


【解决方案1】:

据我所知,大多数编写任何复杂程度的 Haskell 代码的人都使用构建系统。社区似乎在StackCabal 之间大致平均分配。

在这两种情况下,组织代码的最常见方法是为生产和测试代码保留单独的目录:

|-cswk2
  |-src
    |-validCard.hs //THIS FILE CONTAINS MY HASKELL FUNCTIONS 
  |-tests
    |-testSuite.hs //THIS FILE CONTAINS MY QUICKCHECK FUNCTIONS 

使用构建系统,您还需要一个定义依赖项的文件。这通常是 .cabalpackage.yaml 文件。

我在 GitHub 上有各种使用 Stack 的代码库示例。这是中等复杂性之一:https://github.com/ploeh/reservation-api-slice-haskell

【讨论】:

  • 我查看了 Stack 来构建我的系统,到目前为止,我使用您的链接和其他一些链接比使用 Cabal 取得了更好的进展。希望一旦我有了更清晰的理解,我可以在帖子上分享我的发现
  • 当使用堆栈来组织你的构建时,如果你想运行你的 Main.hs,你将如何创建一个可执行文件? ghc Main.hs 给了我同样的“加载界面失败”错误
  • @CadyOG 使用 Stack,您不能直接使用 ghc。要编译,请运行 stack build
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 2012-07-06
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多