问题标签 [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 投票
2 回答
3966 浏览

unit-testing - 如何使用 HUnit 和 Cabal 进行自动化测试?

一天的大部分时间里,我一直在与 Cabal 进行斗争,试图让它的自动化测试功能与 HUnit 一起工作。我已经阅读了这里这里的文档,并且我已经设置了我的测试套件部分,就像它显示的那样,但是每当我尝试使用cabal buildCabal 构建包时,都说唯一支持的测试套件类型是exitcode-stdio-1.0. 是什么赋予了?

0 投票
1 回答
140 浏览

haskell - 如何在断言失败时使 HUnit 打印换行符?

我的一些 HUnit 测试将相当大的结构与assertEqual. 由于 HUnit 将字符串打印在一行上,因此很难发现其中的错误。我想做的是Text.Groom用来漂亮地打印这些结构,但是如果我将一个字符串传递给assertEqual换行符,则会显示为\n这样它会使输出更难阅读。

我如何制作 HUnit,assertEqual特别是打印带有换行符的修饰字符串?

0 投票
1 回答
411 浏览

haskell - 是否可以在 IO 以外的单子中将 HUnit 与测试框架一起使用?

我目前有以下测试代码:

这有点工作,但它很乱。我宁愿能够编写一些东西而不必返回各种被测试的东西,而是在它们有意义的地方拥有断言。

我看到有Assertable课程,但似乎我最终可能不得不重新发明一堆东西。

0 投票
2 回答
4426 浏览

unit-testing - 如何测试 Haskell 中的错误?

我希望能够确保函数在接收到无效值时会引发错误。例如,假设我有一个函数 pos 只返回一个正数:

这是一个简单的例子,但我希望你能明白。

我希望能够编写一个预期会出错的测试用例,并将其视为通过测试。例如:

[我的解决方案]

这就是我根据@hammar 的评论最终得出的结论。

0 投票
1 回答
3213 浏览

haskell - 使用测试创建完整的 Haskell 堆栈

我是 Haskell 的新手,我正在尝试构建一个正在测试的程序。我决定使用 HUnit 和 Cabal。

从我所看到的结构良好的项目来看,如下所示:

对我来说神秘的部分是 TestRunner.hs 和 AppName.cabal。

在 testsuite/tests 目录和子目录下运行所有​​测试的 testrunner 会是什么样子?它如何与 Cabal 集成?

另外,如何将 hackage 依赖项放在 AppName.cabal 中并从命令行构建它们?

我很难找到一个完整的示例,从头开始构建一个包含测试和依赖项的应用程序。

谢谢

0 投票
1 回答
287 浏览

haskell - Haskell 对 HUnit 中 ErrorCall 的单元测试

我有一个功能:

在某些情况下,它会抛出error函数异常:

我正在使用Test.HUnit单元测试,我想制作一个测试用例,断言这些错误是在某些输入上引发的。我发现了这个,它提供了一种测试异常的方法,它是 的实例Eq,但error似乎给出了一个ErrorCall异常,它不是 的实例Eq,所以我得到了错误:

如何编写一个TestCase断言error被调用并(最好)检查消息的断言?

0 投票
1 回答
191 浏览

haskell - 使用文件相关测试的 HUnit 测试

我有一个词法分析器,并希望针对一组已知的良好测试用例对其进行测试。它们保存在子目录./test_src/中,每个都有扩展名testname .txt

我想做的是获取所有相关测试用例的路径:

并创建一个包含 HUnit TestCases 的 HUnit TestList,每个都有一个通过函数创建的断言,如下所示

类似的东西

我的方法似乎失败的地方是,这似乎首先需要以下函数,然后映射其结果:

我强烈怀疑我所遵循的方法是不可能的,因为它似乎需要逃避 IO Monad,所以我要问的是:

  1. 这种方法是否可行,如果是的话,我错过了什么?
  2. 如果没有,你将如何解决这个问题?在所有测试用例中避免硬编码一定很常见
0 投票
1 回答
70 浏览

unit-testing - 传播错误导致 HUnit 测试失败

我正在为一个函数编写一个 HUnit 测试eval :: Wff -> Assignment -> Maybe BoolWff是一种自定义数据类型,它是布尔表达式简化子集的抽象解析树:

并且Assignment是关联列表的类型别名,它为 a 中的每个变量提供一个布尔值Wff

我当前的测试如下所示:

构建的两个测试都通过了。但是,测试不是很稳健。如果我用更复杂的值修改它wffStr但打错了,模式Right wff将失败,因为parse将返回 aLeft String而不是 a Rigth Wff。这会导致测试运行中止,我宁愿让少数糟糕的测试失败,而其他测试则得到实际结果。如何修改我当前的结构,以便错误传播以导致测试失败而不是一起中止?

0 投票
2 回答
480 浏览

haskell - Haskell - 断言一个函数被调用

是否可以验证在 Haskell HSpec 中调用了一个函数?

假设我有两个函数foobar可以转换我的数据。

而且我有一个函数, 它根据它是否收到'f'或'b'作为第二个参数并返回应用函数的结果,在Stuff上应用foobar 。

在我的测试中,我已经全面测试了每个函数 foo 和 bar ,我不想在apply中测试它们的效果。

我可以验证是否调用了函数 foo 或 bar 吗?取决于传递给应用的参数是什么?

0 投票
0 回答
178 浏览

haskell - cabal 沙箱中的 HUnit 测试

在遇到一些麻烦之后,我设法配置了我的 Cabal 项目,以便它运行一个简单的存根测试True @=? True。如果我用测试包中的常量替换一个值,它仍然有效。但是,当我尝试创建要测试的自定义数据类型的实例时,出现链接错误。

目前该项目由两个模块组成:

现在,当testShow被注释掉时,一切都很好,但是当我取消注释时,我得到:

即使仍然在列表中testShow注释掉,也会发生错误。看起来像这样:testModulepackage.cabal

文件都位于: