如何在调试/测试期间阻止应用程序与外界通信?

时间:2012-03-26 21:09:16

标签: .net testing compiler-directives

我有两个独立的应用程序(都是同一系统的一部分)共享一个公共数据库。一个应用程序是负责与外界通信的“网关”,另一个是LAN上的本地用户用于读取/修改/更新本地数据库中的数据的桌面客户端。

在特定时间间隔,网关应用程序将从各种Web服务将新数据下载到本地数据库。同样,网关应用程序将扫描对本地数据库的更改(由用户通过桌面客户端进行),并将这些更改上载到相应的Web服务。

两个数据库正在运行,一个用于生产用途,一个用于测试/调试。网关通过更改app.config中的连接字符串在两者之间切换。

在测试网关应用程序时,我希望它以只读方式运行;也就是说,它可以将新数据下载到(测试/调试)数据库,但它不能能够将任何更改上传回Web服务。

我现在完成此操作的方法是在应用程序上传数据的地方使用#IF DEBUG指令:

public void DetectAndUploadChanges()
{
    Uploader Up = new Uploader();
    Up.DetectChanges();

    #IF !DEBUG
        Up.UploadChanges();
    #END IF
}

这个方法依赖于我记住在代码可以上传某种类型的更改的地方使用调试指令。

有没有更好/替代方法来做这类事情?

1 个答案:

答案 0 :(得分:1)

您可以在运行时实例注入DI(依赖注入)。