2012-08-30 72 views
0

我對測試類有以下定義。NUnit用數據測試泛型

[TestFixture(typeof(List<int>), typeof(int))] 
[TestFixture(typeof(List<string>), typeof(string))] 
public class SerializableListTests<TList, TValue> where TList : IList<TValue>, new() 

我使用NUnit進行測試,發現使用上面的代碼來創建特定類型的我與測試我的泛型類的飛行器具的例子。

我發現的問題是當我需要測試數據。例如。將項目添加到列表中。我不能讓我的測試添加ints,因爲字符串類型測試都會失敗。例如。

public void Serializing_then_deserialize_returns_same_list() 
{ 
    var xmlSerializer = new XmlSerializer(typeof(SerializableList<TList, TValue>)); 
    var xmlMemoryStream = new MemoryStream(); 

    var serializedList = new SerializableList<TList, TValue>(); 

    serializedList.List.Add(1); 

    //Continue with deserialization and collection assert lists are equal. 
} 

有沒有辦法來鏈接在測試中的類型使用的數據正在使用的TestFixture?

回答

1

我有一些像樣的運氣,使用類似SerializableListTests<TList, TValue>這樣的抽象類,並對我自己的其他類型的testfixtures進行了子類化。在那裏,你可以讓基類testfixture進行添加,因爲它是強類型的。

+1

這不就是說重寫每個子類中的測試嗎?我可以用你的想法返回我想測試的數據的子類。這意味着測試將被寫入一次並針對不同類型/數據進行測試。 – Jason

+0

我認爲這是一個很好的方法,或多或少是我想說的,但我的措辭不是很清楚。 –