问题标签 [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.
unit-testing - 为什么我的 HUnit 测试套件失败但在 Cabal 中成功通过?
如果我test/Test.hs
有
和.cabal
一个
我跑cabal test --show-details='always'
然后我得到
当我遇到失败时,为什么我的测试套件通过了?同样,如果我cabal sdist
没有收到测试失败的警告。
unit-testing - 从文件系统动态生成 Tasty `TestTree`
我已经使用该Parsec
库编写了一个文件解析器。我想使用Tasty
测试框架编写一个高级单元测试,以确保解析器正确解析一些给定的文件。
我在以下目录结构中有三个格式正确的文件:
我想:
- 获取所有文件
path/to/files
- 读取每个文件的内容
- 为每个文件创建一个
testCase
,以确保成功解析文件的内容 - 是否动态完成此操作,以便我以后可以添加更多文件而永远不会更改代码
我设法构建了以下内容:
这种结构有效,但并不理想。这是因为testSuite
运行时生成的输出描述性不是很强。
成功时:
失败时:
这个输出并不理想,因为它只会输出第一个解析失败的文件,而不是所有失败的文件。此外,无论是否有任何失败,它也不会告诉您哪些文件被成功解析。
我希望测试树看起来像这样:
成功时:
失败时:
这是我尝试TestTree
从文件系统动态生成格式良好的尝试:
如您所见,unsafePerformIO
此代码中有一个难看的调用来提取TestTree
via unsafePerformIO :: IO [TestTree] -> [TestTree]
。我觉得有必要使用这个不安全的函数调用,因为我不知道如何在testCase
结构中使用从文件系统(文件名)派生的信息。结果被困在[TestTree]
IO
monad中。
使用这个不安全的函数不仅不理想,而且它甚至不起作用,因为这个IO
动作实际上是不安全的。测试套件永远不会运行,因为引发了以下异常:
给定 的类型签名withResource
:
我发现不可能IO a -> TestTree
为最后一个参数构造一个类型的函数,withResource
该函数不使用或调用的参数中的IO a
输入。尽管查看了框架作者的详细解释,但也许我想念应该如何使用 to。也许 Tasty 框架内有更好的功能来实现预期?TestName
testCase
testGroup
Tasty
withResources
TestTree
问题:
如何TestTree
从具有所需描述性输出的文件系统动态创建一个?
haskell - 将 HUnit 与 Cabal 集成时的问题
该命令cabal install
工作正常,cabal configure --enable-tests
. 但是,当我运行cabal build -j
它时,它不会编译:
这是源目录的结构:
这是我的 Cabal 文件(仅相关行):
我按照cabal-test-hunit README中的步骤进行操作。我也想知道,是否需要两次声明依赖关系?!它不是很干燥。
编辑:它似乎找不到我的模块。但是,如果我添加MoodleLatex
到build-depends
另一个错误:
haskell - 使用 Hspec 运行 HUnit 测试
我想在规范中运行 HUnit 测试:
上面的代码有效,但它产生了这个丑陋的输出:
是否可以将标签附加toHit
到每个测试用例上?像这样的东西:
更好的是在每个toHit
案例中附加一个数字。我搞砸了TestList
,map TestLabel
但无济于事。
haskell - Cabal 和 HUnit 互动
我试图让一个简单的单元测试工作,用 HUnit 编写。
我放入测试的模块名为“MyTests”。
我可以从 cabal repl 完美地运行这个模块:
我想将这些测试与 Cabal 集成,以便我可以运行cabal test
.
通过几个小时的谷歌搜索,我发现我应该能够使用以下序列测试我的应用程序:
我在 .cabal 文件中插入了以下内容:
在Main.hs
文件夹下的test/
文件中,我有以下内容:
这显然会返回一个错误:
我真的很喜欢我迄今为止编写的 HUnit 测试(这是一个 MWE),我想知道如何将这些测试相互集成?
haskell - 使用 IO monad 的 Haskell 单元测试
我正在尝试为返回 IO 单子的 haskell 函数编写 HUnit 测试,因为它们执行文件 I/O。有没有办法做到这一点?现在我正在尝试编写一个只返回一个 Bool 的方法,这可以是我的测试
但这给了我以下错误:
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”会产生相同的错误。
haskell - 运行没有输出的 HUnit
我有一个测试:
并且想在另一个没有自动 I/O 输出的 Haskell 程序中运行它
会创建。我试过
但这仍然会产生输出。有没有办法(可能是另一个句柄而不是 stderr/stdout)来阻止测试创建输出?
我只想让 IO 计数在另一个地方使用它们。
haskell - 与 Travis CI 堆叠
我最近一直在尝试将 travis CI 与堆栈一起使用,并且遇到了一些问题。
我的 .travis.yml 文件位于我的 repo 中:(我使用了堆栈网站上的指南)我的配置文件的快照如下:
当我将测试推送到 git 时,测试无法运行,travis CI 尝试构建我的 repo,但是当我检查日志时,它说它找不到堆栈命令。
但是在我的配置文件中,我指定它安装堆栈。
我不确定为什么会这样,任何帮助将不胜感激?
haskell - Haskell HUnit中的PutText
我最近一直在使用 HUnit 测试框架在 haskell 中运行单元测试。
我遇到了这个函数 PutText 和 runTestText ,它将 PutText st 作为它的第一个参数。
但是我不确定如何使用它,并且希望在理解如何使用它方面得到一些帮助?