我有一个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>
答案 0 :(得分:1)
您的app.config必须位于单元测试的bin目录中。检查app.config的属性,看看它是否已部署。
答案 1 :(得分:1)
单元测试部署的工作方式不同。您应该在* .testsettings文件中标记要在bin目录中部署的任何所需文件/程序集。请参阅以下屏幕:
现在你要做的就是找到丢失的文件/程序集并通过testsettings文件进行部署。