'NHibernate.Cfg.Configuration'的类型初始化程序引发了异常。单元测试

时间:2013-06-20 13:19:25

标签: c# unit-testing postgresql nhibernate fluent-nhibernate

我有一个UnitTesting项目,其中一个TestMethod调用存储库,存储库在PostgreSQL

创建新记录

当我运行此测试时,它会引发异常:

消息:The type initializer for 'NHibernate.Cfg.Configuration' threw an exception.

内部异常:{"The type initializer for 'NHibernate.LoggerProvider' threw an exception."}

StackTrace:

   at NHibernate.Cfg.Configuration..ctor()
   at FluentNHibernate.Cfg.FluentConfiguration..ctor()
   at FluentNHibernate.Cfg.Fluently.Configure()
   at Woo.Test.UnitTest.FillCompany() 

当我从ASP.NET MVC Applictaion

调用它时,我的存储库运行良好

这是我的Fluent NHibernate配置:

_configuration = Fluently.Configure().Database(PostgreSQLConfiguration.Standard.ConnectionString(c => c
               .FromConnectionStringWithKey("DefaultConnection"))).Mappings(m => m.FluentMappings.AddFromAssemblyOf<Company>())
               .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true)).BuildConfiguration();
_sessionFactory = _configuration.BuildSessionFactory();

问题仅在于单元测试项目。

App.config中:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configurations>
    <connectionStrings>
      <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Server=localhost;Port=5432;Database=Test;User=postgres;Password=Test;" />
    </connectionStrings>
  </configurations>
</configuration>

2 个答案:

答案 0 :(得分:1)

您的app.config必须位于单元测试的bin目录中。检查app.config的属性,看看它是否已部署。

答案 1 :(得分:1)

单元测试部署的工作方式不同。您应该在* .testsettings文件中标记要在bin目录中部署的任何所需文件/程序集。请参阅以下屏幕:

enter image description here

现在你要做的就是找到丢失的文件/程序集并通过testsettings文件进行部署。

相关问题