关闭第三方代码的unittest执行

时间:2014-10-19 11:22:52

标签: linux unit-testing compilation d

我试图了解'-unittest'dmd开关如何用于选择执行其单元测试的文件。

我有一个文件“a.d”,包含一个单元测试块。文件“a.d”从第三方模块(需要文件“b1.d”,依次为“b2.d”)导入,其中包含自己的unittest块。

我不想在第三方代码中运行测试:我只想在a.d中运行测试。

如果我先编译第三方代码

dmd -c b1.d b2.d

然后尝试将其与我的代码链接,并使用

中复制的单元测试
dmd -unittest a.d b1.o b2.o

然后我收到一个错误,说b1.d中a.d尝试导入的模块位于无法读取的文件中。

有谁能告诉我如何做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:2)

您想要做的是不可能的,因为 a.d 已导入 b1.d b2.d 。这意味着必须将这些模块传递给编译器。

如果你想链接一些 *。o 文件,那就更复杂了:你必须编写一个界面(* .di文件就像 *。所以)因此,使用此机制绕过单元测试不是一个好主意。 (虽然这可能会有点麻烦)。

任意选择某些单元测试的一种更直接的方法是使用特征getUnitTests。这真的是更多的方式。

答案 1 :(得分:1)

你快到了。只需使用单独的编译和链接步骤,即

dmd -c -unittest a.d

然后:

dmd a.o b1.o b2.o

那就是它。