我正在測試一個操作集合的方法。給定一組參數,它應該只包含一個匹配條件的元素。 編輯:該集合可能有其他幾個不符合條件的元素。是否使用Single作爲一個不良習慣?
我使用Single來測試這種行爲,它可以正常工作,因爲如果在所有匹配或多個匹配中都沒有匹配,它將通過拋出一個異常來失敗測試。但沒有實際的斷言,這在某種程度上違反了a rrange,a ct,a ssert。所以我想知道這是否是一種不好的做法,以及是否有更好的方法來做到這一點。
以下僞代碼來說明我的問題:
[TestMethod]
public void TestMethod()
{
List list = MethodToTest(param1, param2);
list.Single(s => s.Matches(condition));
//No actual Assert
}
我認爲斷言更好,至少因爲你可以提供更多關於什麼和失敗的信息。 – Evk
這是一個基於意見的問題...在我看來,我不會使用'Single'來驗證UT中只有一個項目...我會使用'Assert.Equal(1,list.Count(。 ..))' –
我在想''SingleOrDefault''可能在這裏有用。然後,您可以斷言返回的項目是否爲空。 – Jon