【问题标题】:Unit Testing Db4oTool Instrumentation (Collections)单元测试 Db4oTool 检测(集合)
【发布时间】:2012-01-09 21:32:15
【问题描述】:

我正在使用 db4oTool 来检测我的类以实现透明激活/持久性。 我正在使用 -ta 和 -collections 开关。

我知道如何检查类本身是否被以下测试正确检测。

Assert.IsTrue(typeof(IActivatable).IsAssignableFrom(typeof(Machine)), "Machine class not instrumented");

参考:http://community.versant.com/Documentation/Reference/db4o-8.0/net35/reference/Content/basics/transparentpersistence/ta_enhanced_example.htm

但是我不知道如何检查我的集合是否被正确检测。

给定以下机器类:

public class Machine : DomainBase
    {
        private string _machineId;

        public string MachineId
        {
            get { return _machineId; }
            set { _machineId = value; }
        }


        public IList<EnergyTag> EnergyTags { get; set; }

        public void AddEnergyTag(EnergyTag energyTag)
        {
            if (energyTag.Machine == null)
                energyTag.Machine = this;
            if (EnergyTags == null)
                EnergyTags = new List<EnergyTag>();
            EnergyTags.Add(energyTag);
        }

    }

如何测试 EnergyTags 集合是否正确检测?

编辑:

解决方案:

var machine = new Machine();                                                        
Assert.IsTrue(machine.EnergyTags.GetType().Equals(typeof(ActivatableList<EnergyTag>)));

【问题讨论】:

    标签: db4o


    【解决方案1】:

    您可以查看EnergyTags的具体类型

    using System.Collections.Generic;
    
    public class Item
    {
        private IList<Item> l = new List<Item>();
    
        public IList<Item> Items
        {
            get { return l; }
    
            set { l = value; }
        }
    
        public static void Main()
        {
            System.Console.WriteLine("Type: {0}", new Item().Items.GetType().FullName);
        }   
    }
    

    会输出如下内容:

    类型:Db4objects.Db4o.Collections.ActivatableList`1[[Item, ActivatableCollections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]

    因此,您可以按名称检查(如果您的模型中没有对 db4o 程序集的引用)或按类型检查。

    请记住,这个名称 (ActivatableList) 是一个实现细节,可能会在未来的 db4o 版本中发生变化。

    最好的

    【讨论】:

    • 感谢 Vagaus,它把我带到了我需要的地方。最终解决方案附在我原来的问题之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 2017-08-16
    • 2011-12-02
    相关资源
    最近更新 更多