问题标签 [hunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
554 浏览

unit-testing - 为什么我的 HUnit 测试套件失败但在 Cabal 中成功通过?

如果我test/Test.hs

.cabal一个

我跑cabal test --show-details='always'然后我得到

当我遇到失败时,为什么我的测试套件通过了?同样,如果我cabal sdist没有收到测试失败的警告。

0 投票
1 回答
364 浏览

unit-testing - 从文件系统动态生成 Tasty `TestTree`

我已经使用该Parsec库编写了一个文件解析器。我想使用Tasty测试框架编写一个高级单元测试,以确保解析器正确解析一些给定的文件。

我在以下目录结构中有三个格式正确的文件:

我想:

  1. 获取所有文件path/to/files
  2. 读取每个文件的内容
  3. 为每个文件创建一个testCase,以确保成功解析文件的内容
  4. 是否动态完成此操作,以便我以后可以添加更多文件而永远不会更改代码

我设法构建了以下内容:

这种结构有效,但并不理想。这是因为testSuite运行时生成的输出描述性不是很强。

成功时:

失败时:

这个输出并不理想,因为它只会输出第一个解析失败的文件,而不是所有失败的文件。此外,无论是否有任何失败,它也不会告诉您哪些文件被成功解析。

我希望测试树看起来像这样:

成功时:

失败时:

这是我尝试TestTree从文件系统动态生成格式良好的尝试:

如您所见,unsafePerformIO此代码中有一个难看的调用来提取TestTreevia unsafePerformIO :: IO [TestTree] -> [TestTree]。我觉得有必要使用这个不安全的函数调用,因为我不知道如何在testCase结构中使用从文件系统(文件名)派生的信息。结果被困[TestTree] IOmonad中。

使用这个不安全的函数不仅不理想,而且它甚至不起作用,因为这个IO动作实际上是不安全的。测试套件永远不会运行,因为引发了以下异常:

给定 的类型签名withResource

我发现不可能IO a -> TestTree 为最后一个参数构造一个类型的函数,withResource该函数不使用或调用的参数中的IO a输入。尽管查看了框架作者的详细解释,但也许我想念应该如何使用 to。也许 Tasty 框架内有更好的功能来实现预期?TestNametestCasetestGroupTastywithResourcesTestTree

问题:

如何TestTree从具有所需描述性输出的文件系统动态创建一个?

0 投票
1 回答
54 浏览

haskell - 将 HUnit 与 Cabal 集成时的问题

该命令cabal install工作正常,cabal configure --enable-tests. 但是,当我运行cabal build -j它时,它不会编译:

这是源目录的结构:

这是我的 Cabal 文件(仅相关行):

我按照cabal-test-hunit README中的步骤进行操作。我也想知道,是否需要两次声明依赖关系?!它不是很干燥。

编辑:它似乎找不到我的模块。但是,如果我添加MoodleLatexbuild-depends另一个错误:

0 投票
1 回答
79 浏览

haskell - 使用 Hspec 运行 HUnit 测试

我想在规范中运行 HUnit 测试:

上面的代码有效,但它产生了这个丑陋的输出:

是否可以将标签附加toHit到每个测试用例上?像这样的东西:

更好的是在每个toHit案例中附加一个数字。我搞砸了TestListmap TestLabel但无济于事。

0 投票
1 回答
277 浏览

haskell - Cabal 和 HUnit 互动

我试图让一个简单的单元测试工作,用 HUnit 编写。

我放入测试的模块名为“MyTests”。

我可以从 cabal repl 完美地运行这个模块:

我想将这些测试与 Cabal 集成,以便我可以运行cabal test.

通过几个小时的谷歌搜索,我发现我应该能够使用以下序列测试我的应用程序:

我在 .cabal 文件中插入了以下内容:

Main.hs文件夹下的test/文件中,我有以下内容:

这显然会返回一个错误:

我真的很喜欢我迄今为止编写的 HUnit 测试(这是一个 MWE),我想知道如何将这些测试相互集成?

0 投票
1 回答
1094 浏览

haskell - 使用 IO monad 的 Haskell 单元测试

我正在尝试为返回 IO 单子的 haskell 函数编写 HUnit 测试,因为它们执行文件 I/O。有没有办法做到这一点?现在我正在尝试编写一个只返回一个 Bool 的方法,这可以是我的测试

但这给了我以下错误:

0 投票
1 回答
750 浏览

haskell - Cabal 错误:至少缺少以下依赖项:

我正在尝试使用 HUnit 为我的 Haskell/Cabal 包创建一个测试套件,并且在运行 cabal 测试时出现以下错误:

我已经运行“cabal hunit”来安装 hunit。为了检查它是否已经安装,我运行了“ghc-pkg list HUnit”,它返回:

为什么 cabal 不能正确配置?


我试过了:

为了确保 cabal 注意到全局(1.2.5.2)版本或本地(1.3.1.1)版本,通过将 build-depends 指定为:

在我的 [packagename].cabal 文件中。

我还注意到https://www.haskell.org/cabal/FAQ.html#runghc-setup-complains-of-missing-packages,并且不理解那里给出的解释,以及 Setup.hs 的相关性。

我的 Setup.hs 文件仅包含

我尝试将“import Test.HUnit”添加到 Setup.hs 文件中:

使用此 Setup.hs 运行“cabal test”会产生相同的错误。

0 投票
1 回答
53 浏览

haskell - 运行没有输出的 HUnit

我有一个测试:

并且想在另一个没有自动 I/O 输出的 Haskell 程序中运行它

会创建。我试过

但这仍然会产生输出。有没有办法(可能是另一个句柄而不是 stderr/stdout)来阻止测试创建输出?

我只想让 IO 计数在另一个地方使用它们。

0 投票
1 回答
360 浏览

haskell - 与 Travis CI 堆叠

我最近一直在尝试将 travis CI 与堆栈一起使用,并且遇到了一些问题。

我的 .travis.yml 文件位于我的 repo 中:(我使用了堆栈网站上的指南)我的配置文件的快照如下:

当我将测试推送到 git 时,测试无法运行,travis CI 尝试构建我的 repo,但是当我检查日志时,它说它找不到堆栈命令。

但是在我的配置文件中,我指定它安装堆栈。

我不确定为什么会这样,任何帮助将不胜感激?

0 投票
1 回答
121 浏览

haskell - Haskell HUnit中的PutText

我最近一直在使用 HUnit 测试框架在 haskell 中运行单元测试。

我遇到了这个函数 PutText 和 runTestText ,它将 PutText st 作为它的第一个参数。

但是我不确定如何使用它,并且希望在理解如何使用它方面得到一些帮助?