0

我有UnitTesting一个项目,TestMethod它调用存储库和存储库创建新记录PostgreSQL

当我运行此测试时,它会抛出异常:

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

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

堆栈跟踪:

   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();

所以问题只出在单元测试项目上。

应用程序配置:

<?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>
4

2 回答 2

1

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

于 2013-06-20T13:48:48.617 回答
1

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

在此处输入图像描述

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

于 2013-06-20T14:38:19.123 回答