我如何知道编译器是否处于测试模式?

时间:2017-04-13 13:30:35

标签: c#

我正在尝试为我的实际项目设置一个测试环境但是连接到我的测试数据库时遇到了麻烦,我们没有模拟。

我使用一些代码来确定设计时间或运行时间是否为:

        ConnectionStringSettings connString = null;
        string myConnString = null;
        bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
        if (designMode)
        {
            connString = new ConnectionStringSettings()
            {
                ConnectionString = "metadata=res://*/Seguridad.csdl|res://*/Seguridad.ssdl|res://*/Seguridad.msl;provider=System.Data.SqlClient;provider connection string=\"data source=****ServerName****;initial catalog=****DbName****;persist security info=True;user id=****user****;password=****pwd****;MultipleActiveResultSets=True;App=EntityFramework\""
            };
            DebugConnection Cx = DebugModeConnections.GetConnection("Desarrollo");
            _usuario = Cx.Usuario;
            _password = Cx.Password;
            _ServerName = Cx.Server;
            _DbName = Cx.Db;
        }
        else
        {
            foreach (ConnectionStringSettings conn in ConfigurationManager.ConnectionStrings)
            {
                if (conn.Name == ConfiguracionApp.NombreContextoDb)
                    connString = conn;
            }
        }

它适用于我的设计和运行时间,并允许我使用真实数据进行GUI设计。但现在我想实现测试,它不能像我预期的那样工作。

有一种方法可以确定编译器是在测试时间还是类似我可以使用的LicenseManager.UsageMode?

1 个答案:

答案 0 :(得分:0)

既然你在评论中说你使用 VS 测试框架,你应该有一个测试项目。 如果您的文件在测试项目中链接(不是作为 dll 或其他项目),您可以在项目属性中的 条件编译符号 下定义自定义符号,例如 TESTING然后做一个简单的

#if TESTING
// this code is compiled only in tests
#endif

注意:您必须为所有配置(Debug|Release)和平台(x86,AnyCpu)执行此操作。

Build Project Properties