现在,在此标记为重复之前,我看到了other,similar,related个问题,但我认为它们并不适合我的情景。
我正在处理写得不好的,邪恶代码,我别无选择,只能在单元测试中使用。它本质上是一个读取和合并一些特殊格式化配置文件的库。现在在代码中假设它将从可执行应用程序中使用,因此它尝试加载.exe
配置文件。显然,如果从单元测试中使用它就不是这种情况,因此抛出异常会失败。
为了克服这个限制,我想使用preprcessor指令在单元测试项目中使用时更改代码的某些部分。
假设我有3个项目。
测试1 & 邪恶定义了额外的UNITTEST
符号(构建标签 - >条件编译符号),邪恶包含一些此类代码
#if !UNITTEST
// do evil stuff
#else
// do stuff for unit test
#endif
现在我想要的是在 Test1 项目的测试类中定义#UNITTEST
并将其反映在 Evil 项目中。
从我在其他答案中看到的 - 唯一建议的方法是为每种情况构建适当的符号(在运行单元测试时,在本地调试时,在准备发布包时),这看起来很麻烦。
我正在寻找的是一种减少手动干预的方法,并且能够轻松获得我需要的版本。例如,当我构建并且 Test1 定义了UNITTEST
符号时,邪恶也会使用UNITTEST
符号构建(并复制到 Test1的输出)和 Proj1 将始终引用基于 Proj1的DEBUG
或RELEASE
构建的 Evil 版本设置。
有没有办法实现这个目标?
我愿意接受其他建议来解决问题。 不幸的是,用其他东西重构/替换邪恶不是一种选择(现在无法完成的太多努力)。