我试图了解'-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尝试导入的模块位于无法读取的文件中。
有谁能告诉我如何做到这一点?
谢谢!
答案 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
那就是它。