我们有一个类,类似于以下内容:
public class Processor
{
//set timeout in seconds
private const int TIMEOUT = 600;
public void Process()
{
//DO SOMETHING HERE
//CHECK TO SEE IF TIMEOUT HAS BEEN HIT
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我们想编写单元测试,以查看在指定的时间后是否发生超时.显然,我们不希望每次运行测试时都要等待10分钟.考虑到这一点,我的问题是:
我们如何管理这个值,使其在测试期间可能是10秒,但在生产中可能需要10分钟?有很多明显的方法可以做到这一点,但我正在努力确定最干净的方式.我们应该将其作为财产公开吗?包含它作为构造函数参数?将其作为方法参数包含在内?使用编译器指令?
对于您的确切场景,我可能有一个appSettings变量,用于确定适当服务器的超时(dev/whatever).
但一般来说,#if DEBUG在适当的时候使用该指令是非常合适的.但一般情况下,只有在实际上想要在发布模式下阻止编译其中的给定代码时才会使用它.
使用这样一个指令的一个经典理由,至少在我发现时,就是在发布代码中停止记录所包含的语句.另一种情况是,您可能在所有项目中包含某个通用库,但其中的某些代码与您正在部署的给定平台无关(即Compact Framework没有X类,因此您使用该指令来确定CF模式,并相应地编写代码).