2012-01-09 2 views
3

Я использую db4oTool для инструментальных классов для прозрачной активации/настойчивости. Я использую переключатели -ta и -collections.Единичное тестирование Db4oTool Instrumentation (Коллекции)

Я знаю, как проверить, что сами классы надлежащим образом приспособлены к следующему тесту.

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

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

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

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

Лучшее

+0

Спасибо Vagaus, что достало меня туда, где мне нужно было быть. Окончательное решение добавляется к моему первоначальному вопросу. – Travis

Смежные вопросы