Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 测试拆分为多个包的库_Haskell_Testing_Cabal - Fatal编程技术网

Haskell 测试拆分为多个包的库

Haskell 测试拆分为多个包的库,haskell,testing,cabal,Haskell,Testing,Cabal,我正在开发一个有多个后端的数据库DSL。为了避免对用户造成不必要的依赖,DSL被分成一个“核心”包,包含DSL本身,每个后端一个包。后端包都依赖于核心包,因为它定义了每个后端需要提供的API 现在,我想为我的DSL添加一个测试套件。因为大多数被测试的功能都存在于核心包中,所以我想把测试套件放在这里。但是,为了实际运行任何测试,至少需要一个后端。这意味着测试套件同时依赖于核心包和后端包,但后端包又依赖于核心包,从而创建了循环依赖关系 显而易见的解决方案是为测试创建另一个只依赖于核心和后端的包,或者

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

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

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


这是可能的吗?

一个可能的解决方案,您可以保留包布局,就是让核心包提供一个测试套件模块,例如在
yourdslib.Tests
中,以一种通用的方式对任何满足定义API的内容实施公共测试

然后,您可以向每个后端添加一个非常简单的测试,它只调用
yourdslib.Tests
中的测试函数

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