我有个测试项目
test-suite spec
...
benchmark bench
build-depends:
library-test-spec..。如何依赖基准测试套件代码?由于名为library-test-spec的包不存在,所以上面的内容不起作用。
发布于 2018-01-12 18:40:51
从Cabal2.0开始,您可以将公共代码放在一个名为“内部库”中,测试套件和基准测试都可以依赖这个库。根据文档
Cabal2.0和更高版本支持“内部库”,这是额外的命名库(与通常的未命名库部分相反)。例如,假设您的测试套件需要访问库中的某些内部模块,否则您不希望导出这些模块。您可以将这些模块放在内部库中,主库和测试套件都依赖于这个库。
一个方便的内部库如下所示:
library foo-internal
exposed-modules: Foo.Internal
build-depends: base当依赖于它时,您不需要设置版本约束,因为相同的包依赖关系隐式地引用同一个包实例。
使用内部库,您可以避免双重编译(例如,两次包含相同的源)和封装主库(就像将公共代码放在那里时一样)。
记住在您的cabal-version: >=2文件中包括.cabal。
发布于 2018-01-12 17:58:57
您不能在基准测试中依赖test-suite。这个问题的一般解决方案是将您希望在test-suite和基准测试中使用的函数移到您的library目标中。不幸的是,这意味着如果公共功能需要一些测试库,那么您的library目标将有这些依赖关系的测试框架。如果不需要这样的行为,那么可以将这些函数移动到单独的包中,并在测试和基准测试中依赖于这个包。
或者只是将代码从测试复制到基准测试。
https://stackoverflow.com/questions/48227751
复制相似问题