[英]Unit Test Collection
我有一個簡單的方法,該方法返回字母的數組。
public char[] GetLettersOfTheAlphabet() {
char[] result = new char[26];
int index = 0;
for (int i = 65; i < 91; i++) {
result[index] = Convert.ToChar(i);
index += 1;
}
return result;
}
我試圖對代碼進行單元測試
[TestMethod()]
public void GetLettersOfTheAlphabetTest_Pass() {
HomePage.Rules.BrokerAccess.TridionCategories target = new HomePage.Rules.BrokerAccess.TridionCategories();
char[] expected = new char[] { char.Parse("A"),
char.Parse("B"),
char.Parse("C"),
char.Parse("D"),
char.Parse("E"),
char.Parse("F"),
char.Parse("G"),
char.Parse("H"),
char.Parse("I"),
char.Parse("J"),
char.Parse("k"),
char.Parse("L"),
char.Parse("M"),
char.Parse("N"),
char.Parse("O"),
char.Parse("P"),
char.Parse("Q"),
char.Parse("R"),
char.Parse("S"),
char.Parse("T"),
char.Parse("U"),
char.Parse("V"),
char.Parse("W"),
char.Parse("X"),
char.Parse("Y"),
char.Parse("Z")};
char[] actual;
actual = target.GetLettersOfTheAlphabet();
Assert.AreEqual(expected, actual);
}
看來它歸結為數組使用的比較函數。 您如何處理這種情況?
如果使用的是.NET 3.5,則還可以使用SequenceEqual()
:
[TestMethod()]
public void GetLettersOfTheAlphabetTest_Pass() {
var target = new HomePage.Rules.BrokerAccess.TridionCategories();
var expected = new[] { 'A','B','C', ... };
var actual = target.GetLettersOfTheAlphabet();
Assert.IsTrue(expected.SequenceEqual(actual));
}
CollectionAssert.AreEquivalent(預期的,實際的)工作。
我不確定它是如何工作的,但是它確實可以滿足我的需求。 我認為它會檢查實際列中預期集合中每個項目中的每個項目,還會檢查它們是否具有相同的計數,但是順序無關緊要。
只需遍歷數組並比較每個項目。 每個數組中的索引4應該相同。
另一種方法是檢查結果數組是否包含說“ A”,“ G”,“ K”或隨機字母。
我從單元測試中學到的東西有時有時必須復制代碼或做更多的工作,因為這是測試的本質。 基本上,對於單元測試有效的方法對於生產站點可能是不可接受的。
您的K在預期數組中為小寫字母,但我相信代碼會生成大寫字符。 如果比較區分大小寫,則兩個數組不匹配時將導致失敗。
您還可以對數組中的值的大小和一些抽查進行測試。
Assert.AreEqual(預期長度,實際長度)
Assert.AreEqual(期望[0],實際[0])...。
首先:
Assert.AreEqual(expected.Length,actual.Length);
然后:
for(int i = 0; i < actual.Length; i++)
{
//Since you are testing whether the alphabet is correct, then is ok that the characters
//have different case.
Assert.AreEqual(true,actual[i].toString().Equals(expected[i].toString(),StringComparison.OrdinalIgnoreCase));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.