我剛剛開始學習測試,並有以下問題。我的方法需要IEnumerable<int>
參數並返回相同。基本上,它是合併兩個排序arrays/lists
的方法,但由於我正在從文件讀取值,我不想使用不必要的內存來創建list or array
,所以我決定使用IEnumerable
。我有一種方法可以讀取文件並將文件中找到的所有數字轉換爲integers
並返回IEnumerable<int>
。所以下面的方法使用該結果併合並這些排序的整數。如何測試返回IEnumerable的方法<int>?
public static IEnumerable<int> GetSortedIntegers(IEnumerable<int> first , IEnumerable<int> second)
{
var item1 = first.GetEnumerator();
var item2 = second.GetEnumerator();
bool item1HasNext = item1.MoveNext();
bool item2HasNext = item2.MoveNext();
while (item1HasNext && item2HasNext)
{
if (item1.Current > item2.Current)
{
yield return item2.Current;
item2HasNext = item2.MoveNext();
}
else if(item1.Current == item2.Current)
{
yield return item2.Current;
item2HasNext = item2.MoveNext();
item1HasNext = item1.MoveNext();
}
else
{
yield return item1.Current;
item1HasNext = item1.MoveNext();
}
}
while (item1.MoveNext())
{
yield return item1.Current;
}
while (item2.MoveNext())
{
yield return item2.Current;
}
}
我想測試這種方法的功能和使用Nunit
創建測試用例,但我不知道我應該建立什麼樣採集測試purpose.Idea是做類似如下:
[Test]
public static void GetSortedIntegersTest()
{
var first = new List<int>() { 0 };
var second = new List<int>() { 1, 2 };
var expected = new List<int>{ 0, 1, 2 };
var actual = GetSortedIntegers(first, second);
CollectionAssert.AreEqual(expected, actual);
}
感謝您的建議。
爲什麼你關心的內存使用情況?只需創建一個實現「IEnumerable」的東西。你不能構建一個接口,你必須使用特定的實現。 –
我得到這個權利,你是建議我需要創建一些實現IEnumerable的集合,比創建該集合的3個實例,前兩個填充值並將它們作爲參數傳遞給我的方法,第三個填充預期的結果?謝謝 –
這就是你在測試中已經完成的測試,看起來好像是單個測試。目前還不清楚你的問題是什麼。 – Charlie