首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依靠台架的测试

依靠台架的测试
EN

Stack Overflow用户
提问于 2018-01-12 13:56:55
回答 2查看 169关注 0票数 5

我有个测试项目

代码语言:javascript
复制
test-suite spec
  ...

benchmark bench
  build-depends:
    library-test-spec

..。如何依赖基准测试套件代码?由于名为library-test-spec的包不存在,所以上面的内容不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-12 18:40:51

从Cabal2.0开始,您可以将公共代码放在一个名为“内部库”中,测试套件和基准测试都可以依赖这个库。根据文档

Cabal2.0和更高版本支持“内部库”,这是额外的命名库(与通常的未命名库部分相反)。例如,假设您的测试套件需要访问库中的某些内部模块,否则您不希望导出这些模块。您可以将这些模块放在内部库中,主库和测试套件都依赖于这个库。

一个方便的内部库如下所示:

代码语言:javascript
复制
library foo-internal
    exposed-modules: Foo.Internal
    build-depends: base

当依赖于它时,您不需要设置版本约束,因为相同的包依赖关系隐式地引用同一个包实例。

使用内部库,您可以避免双重编译(例如,两次包含相同的源)和封装主库(就像将公共代码放在那里时一样)。

记住在您的cabal-version: >=2文件中包括.cabal

票数 3
EN

Stack Overflow用户

发布于 2018-01-12 17:58:57

您不能在基准测试中依赖test-suite。这个问题的一般解决方案是将您希望在test-suite和基准测试中使用的函数移到您的library目标中。不幸的是,这意味着如果公共功能需要一些测试库,那么您的library目标将有这些依赖关系的测试框架。如果不需要这样的行为,那么可以将这些函数移动到单独的包中,并在测试和基准测试中依赖于这个包。

或者只是将代码从测试复制到基准测试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48227751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档