2010-10-18 74 views
2

說我有一個方法,我想測試:如何測試返回的數組包含至少一個值具有一定的屬性值

public Cars[] GetCars(); 

我想測試,通過這個方法返回的數組包含至少一輛型號爲「Mustang」的汽車。

我該怎麼做到這一點?

目前,我有這樣的代碼:

[Test] 
public void GetCars_ReturnsMustangs() 
{ 
    Cars[] cars = GetCars(); 

    foreach(Car car in cars) 
    { 
     Assert.IsTrue(Car.Type == "Mustang"); 
    } 
} 

這枚據我可以告訴我知道這不是把循環測試中是一個好主意工程作爲測試?

有人可以提出一個更好的選擇嗎?

謝謝!

回答

3

像這樣的東西應該做的伎倆,只要確保添加「使用System.Linq;」

[Test] 
public void GetCars_ReturnsMustangs() 
{ 
    Cars[] cars = GetCars(); 
    Assert.IsTrue(cars.Where(c => c.Type == "Mustang").Count() > 0); 
} 

(該代碼尚未經過測試的語法錯誤,但應該能正常運行)

編輯:.Any()每@約翰的評論更換.Count() > 0

+1

。使用Any()而不是Count可能會更好。參見http://blogs.teamb.com/craigstuntz/2010/04/21/38598/ – 2010-10-18 03:01:54

+0

@John - 謝謝,我不知道.Any(),直到你提到它。感覺像我每天都在學LINQ的新東西哈哈 – 2010-10-18 03:03:04

+0

感謝您的答案! – 2010-10-18 03:10:33

4

會的LINQ是一種選擇

using System.Linq 

[Test] 
public void GetCars_ReturnsMustangs() 
{ 
    Cars[] cars = GetCars(); 
    Assert.IsTrue(cars.Any(c => c.Type == "Mustang")); 
} 

編輯:

下面是何時使用COUNT()VS時使用的任何()

http://blogs.teamb.com/craigstuntz/2010/04/21/38598/

+0

感謝這篇文章,我剛剛瞭解到'.Any()':) – 2010-10-18 03:01:55

3

怎麼樣一個偉大的文章:

Assert.IsTrue(cars.Any(c => c.Type == "Mustang")); 
相關問題