测试库分为多个包

时间:2017-04-11 18:20:45

标签: haskell testing cabal

我正在开发一个具有多个后端的数据库DSL。为了避免对用户造成不必要的依赖,DSL被分成了一个核心"包,包含DSL本身,每个后端包一个包。后端包都依赖于核心包,因为它定义了每个后端需要提供的API。

现在,我想为我的DSL添加一个测试套件。由于大多数被测试的功能都存在于核心包中,因此我想放置测试套件。但是,为了实际运行任何测试,至少需要一个后端。这意味着测试套件依赖于核心软件包和后端软件包,但后端软件包依赖于核心软件包,从而创建了循环依赖。

显而易见的解决方案是为测试创建另一个包,它只依赖于核心和后端,或者将后端API移动到核心和后端程序包可以依赖的自己的包中(允许后端到不依赖于核心包)。但是,如果可能的话,我希望保持包结构不变,并将测试套件作为核心包的一部分。

这可能吗?

1 个答案:

答案 0 :(得分:3)

可以保留包布局的一种可能的解决方案是使核心包提供测试套件模块,例如:在YourDSLLib.Tests中,以通用方式为满足已定义API的任何内容实现通用测试。

然后,您可以为每个后端添加一个非常简单的测试,只需调用YourDSLLib.Tests中的测试函数。

一个优点是可以维护常见的测试代码,但也可以在必要时为每个后端定制测试。

相关问题