使用#IF指令检测单元测试

时间:2011-11-25 19:00:42

标签: c# unit-testing directive

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

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

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

也许某种程度上检测单元测试函数的属性?

2 个答案:

答案 0 :(得分:11)

不,因为代码存在于构建的二进制文件中,或者它不存在。在编译时决定完全,因此在执行时没有什么可以重新引入“丢失”代码。您必须动态加载两个不同的二进制文件之一,并以这种方式运行测试。

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

答案 1 :(得分:0)

您不希望从代码中处理调用者上下文;特别是如果你试图测试其中的逻辑。但是,如果要执行某些具有不同参数的函数(例如),具体取决于您是在应用程序还是测试上下文中执行它,那么您可以使用某种基本类型或接口作为参数,或者使用属性并使用反射检查属性。这些指令用于确定应编译的代码,只有在您确定要编写的内容时才应使用它们。