Integration testing 这个流畅的NHibernate映射测试是假阳性吗?

Integration testing 这个流畅的NHibernate映射测试是假阳性吗?,integration-testing,fluent-nhibernate-mapping,Integration Testing,Fluent Nhibernate Mapping,我将映射测试改为使用重载。验证映射(TEntity first),突然我的测试通过了。我以前从未使用过这种过载,因为我不确定它是如何工作的,我担心我会得到一个假阳性 我很惊讶,主要是因为我认为我没有使用自动映射,甚至还没有映射出整个实体。所以现在我想知道: 该测试通过是因为它应该通过,还是因为它没有真正测试任何东西? 更新:进一步调查后,我发现只要我映射ID,一切都会正常工作。应该是这样的吗?.VerifyTheMappings(TEntity first)真正测试的是什么 我的代码: 配置 流

我将映射测试改为使用重载
。验证映射(TEntity first)
,突然我的测试通过了。我以前从未使用过这种过载,因为我不确定它是如何工作的,我担心我会得到一个假阳性

我很惊讶,主要是因为我认为我没有使用自动映射,甚至还没有映射出整个实体。所以现在我想知道:

该测试通过是因为它应该通过,还是因为它没有真正测试任何东西?

更新:进一步调查后,我发现只要我映射ID,一切都会正常工作。应该是这样的吗?
.VerifyTheMappings(TEntity first)
真正测试的是什么

我的代码: 配置
流利。配置()
.Database(MsSqlConfiguration.MsSql2008.DefaultSchema(“dbo”)
.ConnectionString(ConfigurationManager.ConnectionString[“Nitro_Empty”].ConnectionString))
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf());
实体:
公共类检查对象:IEntity
{
公共虚拟整数ID{get;set;}
公共虚拟项目{get;set;}
公共虚拟检查对象类型{get;set;}
公共虚拟用户CreatedByUser{get;set;}
创建的公共虚拟日期时间{get;set;}
公共虚拟日期时间上次更新{get;set;}
公共虚拟用户LastUpdatedByUser{get;set;}
公共虚拟字符串Littera{get;set;}
公共虚拟字符串所有者{get;set;}
公共虚拟字符串地址{get;set;}
公共虚拟字符串管理器{get;set;}
公共虚拟字符串注释{get;set;}
公共虚拟浮点位置x{get;set;}
公共虚拟浮点位置{get;set;}
公共虚拟浮点位置z{get;set;}
}
地图:
公共类检查对象映射:类映射
{
公共检查对象映射()
{
Id(i=>i.Id).Not.Nullable();
}
}
测试:
[测试]
public void ispartition object_MappingsAreOK()
{
var dtenow=DateTime.Now;
dtenow=newdatetime(dtenow.Ticks-(dtenow.Ticks%TimeSpan.TicksPerSecond),dtenow.Kind);
var io=新的检查对象
{
ID=1,
Project=Data.Project,
类型=Data.InspectionObjectTypeVilla,
CreatedByUser=Data.Consultant,
已创建=dtenow,
LastUpdatedByUser=Data.UserConsultant1,
LastUpdated=dtenow.AddHours(1),
Littera=“15”,
所有者=“Fastighetsägare”,
Address=“Address”,
看守人=“Fastighetsskötare”,
备注=“Anteckningar”,
位置X=1F,
位置Y=2F,
位置Z=3F
};
var session=IoC.Resolve();
新的持久性规范。验证应用程序(io);
}
(是的,我在我的
设置
拆卸
例程中也有一些导出/删除模式,但它们都是标准的。它只是嵌入了围绕该应用程序构建的测试框架中,有点太深了,我不想挖掘相关部分,因为它没有做任何花哨的事情,只是在花哨的地方……)

我发现只要我把地图 好的,一切正常。是这样的吗 应该是吗?什么是 .验证应用程序(优先权) 真的要考试吗

通过查看测试的

所有VerifyTheMappings似乎都在测试它是否可以提交和加载对象(因此它只需要映射一个ID)。如果要测试除是否可以保存或加载ID之外的任何内容,则必须在该对象的
allProperties
列表中获取一些值。这通常通过
CheckProperty
CheckReference
调用来完成<代码>验证应用程序(T优先)不会执行任何特殊操作来自动填充
所有属性。提供了以下正确使用示例:

public void CanCorrectlyMapEmployee()
{
    new PersistenceSpecification<Employee>(session, new CustomEqualityComparer())
        .CheckProperty(c => c.Id, 1)
        .CheckProperty(c => c.FirstName, "John")
        .CheckProperty(c => c.LastName, "Doe")
        .CheckReference(c => c.Store, new Store() {Name = "MyStore"})
        .VerifyTheMappings();
}
public void CanCorrectlyMapEmployee()
{
新的PersistenceSpecification(会话,新的CustomEqualityComparer())
.CheckProperty(c=>c.Id,1)
.CheckProperty(c=>c.FirstName,“John”)
.CheckProperty(c=>c.LastName,“Doe”)
.CheckReference(c=>c.Store,newstore(){Name=“MyStore”})
.验证应用程序();
}

非常感谢-这回答了我的问题(回答为“是”),并解释了原因。干杯
public class InspectionObject : IEntity<int>
{
    public virtual int ID { get; set; }

    public virtual Project Project { get; set; }
    public virtual InspectionObjectType Type { get; set; }

    public virtual User CreatedByUser { get; set; }
    public virtual DateTime Created { get; set; }
    public virtual DateTime LastUpdated { get; set; }
    public virtual User LastUpdatedByUser { get; set; }

    public virtual string Littera { get; set; }
    public virtual string Owner { get; set; }
    public virtual string Address { get; set; }
    public virtual string Caretaker { get; set; }
    public virtual string Remarks { get; set; }
    public virtual float PlacementX { get; set; }
    public virtual float PlacementY { get; set; }
    public virtual float PlacementZ { get; set; }
}
public class InspectionObjectMap : ClassMap<InspectionObject>
{
    public InspectionObjectMap()
    {
        Id(i => i.ID).Not.Nullable();
    }
}
    [Test]
    public void IspectionObject_MappingsAreOK()
    {
        var dtenow = DateTime.Now;
        dtenow = new DateTime(dtenow.Ticks - (dtenow.Ticks % TimeSpan.TicksPerSecond), dtenow.Kind);

        var io = new InspectionObject
        {
            ID = 1,
            Project = Data.Project,
            Type = Data.InspectionObjectTypeVilla,
            CreatedByUser = Data.Consultant,
            Created = dtenow,
            LastUpdatedByUser = Data.UserConsultant1,
            LastUpdated = dtenow.AddHours(1),

            Littera = "15",
            Owner = "Fastighetsägare",
            Address = "Adress",
            Caretaker = "Fastighetsskötare",
            Remarks = "Anteckningar",

            PlacementX = 1F,
            PlacementY = 2F,
            PlacementZ = 3F
        };

        var session = IoC.Resolve<ISession>();

        new PersistenceSpecification<InspectionObject>.VerifyTheMappings(io);
    }
public void CanCorrectlyMapEmployee()
{
    new PersistenceSpecification<Employee>(session, new CustomEqualityComparer())
        .CheckProperty(c => c.Id, 1)
        .CheckProperty(c => c.FirstName, "John")
        .CheckProperty(c => c.LastName, "Doe")
        .CheckReference(c => c.Store, new Store() {Name = "MyStore"})
        .VerifyTheMappings();
}