首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在进行单元测试时,如何让#if条件生效?

在进行单元测试时,如何让#if条件生效?
EN

Stack Overflow用户
提问于 2009-02-24 19:17:15
回答 5查看 334关注 0票数 0

这就是我想要做的。

代码语言:javascript
复制
/// <summary>
        /// Gets the session factory.
        /// </summary>
        /// <value>The session factory.</value>
        public ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
#if(NUNIT)
                     _sessionFactory = Fluently.Configure()
                        .Database(SQLiteConfiguration.Standard
                                      .UsingFile(DbFile)
                                      .ShowSql())
                        .Mappings(m =>
                                  m.FluentMappings.AddFromAssemblyOf<ForeignFormat>())
                        .ExposeConfiguration(BuildSchema)
                        .BuildSessionFactory();

#else
                    _sessionFactory = Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2005
                              .ConnectionString(c => c
                                                         .Server(".\\sqlexpress")
                                                         .Database("mPort")
                                                         .TrustedConnection())
                                                         .ShowSql()
                                               )

                .Mappings(m => m
                                   .FluentMappings.AddFromAssemblyOf<ForeignFormat>())
                .BuildSessionFactory();
#endif
                }
                return _sessionFactory;

            }
        }

如果你在运行一个单元测试,有条件的#if是可能的吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-02-24 19:43:17

#if是一个编译器指令,所以当你要运行测试时,你需要以不同的方式编译你的代码,而不是当你要真正运行它的时候。您可以在项目的生成设置中定义编译器标志来执行此操作。

但是,我同意其他每个人的观点,他们认为这不是一个好的方法。除了人们提到的其他问题之外,当你想在运行单元测试和运行真正的应用程序之间切换时,不断地重新编译将是一件痛苦的事情。

依赖注入或mocking将更好地为您服务。

票数 2
EN

Stack Overflow用户

发布于 2009-02-24 19:34:49

我建议模拟数据库连接,而不是在代码中散布# if /#else (即使它只在这一个地方)。

票数 1
EN

Stack Overflow用户

发布于 2009-02-24 19:34:00

我不推荐使用这种方法进行单元测试。你不应该把“测试”代码放到生产文件中。

您应该研究模拟对象,以便从BuildSessionFactory方法中获得所需的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/583151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档