【问题标题】:Testing a library split into multiple packages测试拆分为多个包的库
【发布时间】:2017-04-12 02:44:17
【问题描述】:

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

现在,我想为我的 DSL 添加一个测试套件。由于大多数被测试的功能都存在于核心包中,这就是我想要放置测试套件的地方。然而,为了真正运行任何测试,至少需要一个后端。这意味着测试套件同时依赖于核心包和后端包,而后端包又依赖于核心包,形成循环依赖。

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

这可能吗?

【问题讨论】:

    标签: haskell testing cabal


    【解决方案1】:

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

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

    一个优点是可以维护通用测试代码,但如果需要,还可以为每个后端自定义测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2017-10-05
      • 1970-01-01
      相关资源
      最近更新 更多