C# 有什么好方法可以在单元测试和发布之间切换不同的上下文吗。在C中#

C# 有什么好方法可以在单元测试和发布之间切换不同的上下文吗。在C中#,c#,unit-testing,C#,Unit Testing,我在代码中有一些上下文需要切换,这取决于它是在测试中运行还是在发布中运行。 在我的产品编码中说: PublishRequest(); // the real one //PublishRequestPsudo(); // the one want to be run during unit test 我的想法是创建一个TestFlag类: if (!TestFlag.PublishFlag) { PublishRequest(); } else { PublishRequest

我在代码中有一些上下文需要切换,这取决于它是在测试中运行还是在发布中运行。 在我的产品编码中说:

PublishRequest(); // the real one
//PublishRequestPsudo(); // the one want to be run during unit test
我的想法是创建一个TestFlag类:

if (!TestFlag.PublishFlag)
{
    PublishRequest();
}
else
{
    PublishRequestPsudo();
}

如果我有很多地方可以做的话,这看起来很冗长。有什么好的模式吗

实现这一点的一个很好的方法是


这方面的另一个好资源是

,因此使用带有TestFlag类的交换机将导致冗余依赖,对吗?@demaxSH:这不是冗余依赖,而是我觉得我喜欢硬编码进行测试。生产代码不应该有额外的可测试性代码。。而是重新设计,使其可测试。使用角色,其实现可以轻松/非侵入性地由单元测试替代。