2012-01-09 31 views
3

我正在使用db4oTool來爲我的類設置透明激活/持久性。 我正在使用-ta和-collections開關。單元測試Db4oTool儀器(集合)

我知道如何檢查這些類本身是否正在通過以下測試正確檢測。

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>))); 

回答

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 [項目,ActivatableCollections,版本= 0.0.0.0,文化=中立,公鑰=空]

所以,你可以通過名字查詢(如果你不在模型中沒有對db4o程序集的引用)或按其他方式鍵入。

請記住,該名稱(ActivatableList)是一個實現細節,可能會在將來的db4o版本中進行更改。

最好

+0

感謝Vagaus,這讓我在我需要的地方。最終解決方案附加到我原來的問題。 – Travis 2012-01-10 14:17:50