2013-06-20 27 views
0

UnitTesting项目,一个TestMethod这就要求存储库和信息库中PostgreSQL“NHibernate.Cfg.Configuration”的类型初始值设定项引发异常。单元测试

当我运行这个测试其抛出异常创造了新的纪录:

消息: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> 

回答

1

单元测试部署的工作方式不同。您应该从* .testsettings文件中将所有必需的文件/程序集标记在bin目录中。看到下面的屏幕:

enter image description here

所有你现在要做的是找到丢失的文件/装配,并通过testsettings文件进行部署。

1

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

+0

请回复。我总是复制:始终在app.config上复制。这不是连接字符串问题。我试过PostgreSQLConfiguration.Standard.ConnectionString(“Server = localhost; Port = 5432; Database = Test; User = postgres; Password = Test;”),但它也可以。 –

相关问题