Модульное тестирование Db4oTool Instrumentation (Коллекции) - PullRequest
3 голосов
/ 10 января 2012

Я использую 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 была правильно оснащена?

Edit:

Решение:

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

1 Ответ

1 голос
/ 10 января 2012

Вы можете проверить конкретный тип 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 = нейтральный, PublicKeyToken = null]]

Таким образом, вы можете проверить по имени (если у вас нет ссылки на db4oсборки в вашей модели) или по типу иным образом.

Имейте в виду, что это имя (ActivatableList) является подробностью реализации и может измениться в будущих выпусках db4o.

Best

...