令我震惊的是,我真的不知道用黑盒测试与 Cabal 打包的可执行文件的方法。
例如,我可以运行任意 shell 命令,并且我当然可以连接它npm
,以便转换和执行必要的源代码,并检查它们的副作用。
Stack (如此处所述)构建可执行文件并将它们发布到$PATH
测试套件中,因此我可以轻松运行它们。
但是对于 Cabal,测试套件显然甚至不能依赖于可执行文件,因此无法强制构建后者。(我错了吗?)即使那样,我也必须知道编译后的二进制文件的路径。
我该如何解决这个问题?
我的情况的细节是可执行文件必须广泛分析系统的状态并相应地分支,我想进行集成测试以确保它不会忘记这样做。
另请注意,我不喜欢IO
直接运行相关功能,因为我发现它不够集成。或者,更确切地说,我希望能够运行单个IO
函数并作为一个整体运行程序。就我而言,已经有测试 shell 脚本到位,但我真的很想“把它们烤进去”。