Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 映射集成测试NHibernate映射_Unit Testing_Nhibernate_S#arp Architecture - Fatal编程技术网

Unit testing 映射集成测试NHibernate映射

Unit testing 映射集成测试NHibernate映射,unit-testing,nhibernate,s#arp-architecture,Unit Testing,Nhibernate,S#arp Architecture,此处的设置方法: 使用NHibernate.config: [SetUp] public virtual void SetUp() { var mappingAssemblies = RepositoryTestsHelper.GetMappingAssemblies(); this.configuration = NHibernateSession.Init( new SimpleSessionStorage(), mappingAssemblies,

此处的设置方法:

使用NHibernate.config:

[SetUp]
public virtual void SetUp()
{
    var mappingAssemblies = RepositoryTestsHelper.GetMappingAssemblies();
    this.configuration = NHibernateSession.Init(
    new SimpleSessionStorage(),
    mappingAssemblies,
    new AutoPersistenceModelGenerator().Generate(),
    "../../../Northwind.Web/NHibernate.config");
}

这是不是有点狡猾,因为它引入了外部依赖?我想也可以通过编程方式创建NHibernate.config文件,并将其传递给正确的Init方法siganture。我说的对吗?安装过程中是否有人这样做?谢谢。

您可以按照前面提到的编程方式进行,也可以在测试项目中创建不同的NHibernate.Config,或者只在项目中添加指向实际NHibernate.Config的链接(右键单击项目,添加现有项,找到NHibernate.Config,然后单击添加,而不是单击添加,请单击添加旁边的箭头并选择“添加为链接”)

我想说,真正不可靠的部分是使用生产中的NHibernate.Config进行测试


在我过去做过这样的事情的地方,我们将创建一个专门用于测试的数据库(通过db迁移工具),并将其用于测试。通过使用创建的数据库详细信息为测试生成配置文件,或者生成与测试项目中的配置匹配的数据库。

您可以按照前面提到的编程方式来完成,或者只需在测试项目中创建不同的NHibernate.config,或者只需在项目中添加指向实际NHibernate.config的链接(右键单击project,添加现有项,找到NHibernate.Config,然后单击add旁边的箭头并选择“添加为链接”,而不是单击add)

我想说,真正不可靠的部分是使用生产中的NHibernate.Config进行测试


在我过去做过这样的事情的地方,我们将创建一个专门用于测试的数据库(通过db迁移工具)并将其用于我们的测试。通过使用创建的数据库详细信息生成测试的配置文件,或者生成与测试项目中的配置相匹配的数据库。

我在当前项目中成功地采用了类似的方法。首先,它不是单元,而是映射集成测试,因为外部资源(即数据库)e涉及的内容、测试的执行时间和典型技术问题:

  • 最好不要使用现有的数据库架构,而是每次使用随机架构名称的配置从nHibernate创建并导出它。这将消除两个或更多开发人员同时在同一架构上运行集成测试的可能性:

    var export=新的SchemaExport(配置); Execute(脚本:false,export:true,justDrop:false,连接:databaseConnection,exportOutput:null)

  • 请记住在使用后清理此架构。它很容易在几天内用完磁盘空间等

  • 考虑将此代码从{[SetUp]}移动到{[FixtureSetUp]}以节省测试夹具的执行时间。与通常的内存单元测试执行时间相比,使用数据库需要花费大量时间

  • 与通常的单元测试相比,由于时间和资源的消耗,developers/CI服务器触发此类测试的频率可能较低。在我的项目中,它们只安排在夜间构建或手动触发的构建期间

  • 您可以在运行时生成nHibernate配置,因此不需要“../../../Northwind.Web/nHibernate.config”

  • 在许多情况下,您可以使用SQLite而不是SQL Server,但映射通常针对每个SQL引擎


  • 我在当前项目中成功地采用了类似的方法。首先,它不是单元,而是映射集成测试,因为涉及外部资源,如数据库、测试的执行时间和典型的技术问题:

  • 最好不要使用现有的数据库架构,而是每次使用随机架构名称的配置从nHibernate创建并导出它。这将消除两个或更多开发人员同时在同一架构上运行集成测试的可能性:

    var export=新的SchemaExport(配置); Execute(脚本:false,export:true,justDrop:false,连接:databaseConnection,exportOutput:null)

  • 请记住在使用后清理此架构。它很容易在几天内用完磁盘空间等

  • 考虑将此代码从{[SetUp]}移动到{[FixtureSetUp]}以节省测试夹具的执行时间。与通常的内存单元测试执行时间相比,使用数据库需要花费大量时间

  • 与通常的单元测试相比,由于时间和资源的消耗,developers/CI服务器触发此类测试的频率可能较低。在我的项目中,它们只安排在夜间构建或手动触发的构建期间

  • 您可以在运行时生成nHibernate配置,因此不需要“../../../Northwind.Web/nHibernate.config”

  • 在许多情况下,您可以使用SQLite而不是SQL Server,但映射通常针对每个SQL引擎


  • 谢谢Seif。你知道任何以编程方式创建NHibernate.Config的示例吗?谢谢。谢谢Seif。你知道任何以编程方式创建NHibernate.Config的示例吗?谢谢。你能提供一个为sqllite执行5(以编程方式)的示例吗?谢谢。你能提供一个执行5的示例吗(以编程方式)用于sqllite?