6

我在我的代码中有这个特定的调用,我发现在运行完整的应用程序时配置需要不同,当我使用集成单元测试进行测试时。

有没有办法使用#if指令检查来自单元测试的调用?

#if TestMethod
...do this config
#else
...do this config
#endif

也许以某种方式检测单元测试功能的属性?

4

2 回答 2

11

不,因为代码要么存在于构建的二进制文件中,要么不存在。该决定完全是在编译时做出的,因此在执行时您无法做任何事情来重新引入“丢失”的代码。您必须动态加载两个不同的二进制文件之一,并以这种方式运行测试。

您是否必须使用条件编译,而不是在执行时决定采用哪条路线?

于 2011-11-25T19:03:14.700 回答
0

您不想从代码中处理调用者上下文;特别是如果您尝试测试其中的逻辑。但是,如果您想根据您是在应用程序还是测试上下文中执行某些具有不同参数的函数(例如),那么您可以使用一些基本类型或接口作为参数,或者用属性并使用反射检查属性。这些指令将用于确定应该编译哪些代码,并且只有在您确定这是您的意图时才应该使用它们。

于 2011-11-25T19:04:54.523 回答