이 테스트는 어떻게 실패 할 수 있습니까?
[TestMethod]
public void Get_Code()
{
var expected = new List<int>();
expected.AddRange(new [] { 100, 400, 200, 900, 2300, 1900 });
var actual = new List<int>();
actual.AddRange(new [] { 100, 400, 200, 900, 2300, 1900 });
Assert.AreEqual(expected, actual);
// Assert.AreSame(expected, actual) fails
// Assert.IsTrue(expected.Equals(actual)) fails
}
답변
컬렉션에 대한 어설 션을 만들려면 다음을 사용해야합니다 CollectionAssert
.
CollectionAssert.AreEqual(expected, actual);
List<T>
오버라이드 (override)하지 않는 Equals
, 그렇다면 Assert.AreEqual
바로 호출 Equals
, 그것을 참조 평등을 사용하여 종료됩니다.
답변
나는 이것이 도움이 될 것 같아
Assert.IsTrue(expected.SequenceEqual(actual));
답변
각각에 동일한 값 모음이 포함되어 있는지 확인하려면 다음을 사용해야합니다.
CollectionAssert.AreEquivalent(expected, actual);
편집하다:
“두 개의 컬렉션은 같은 양이지만 같은 순서로 같은 요소를 가지고 있다면 동등합니다. 같은 개체를 참조하는 것이 아니라 값이 같은 요소는 같습니다.” -https : //msdn.microsoft.com/en-us/library/ms243779.aspx
답변
이 스레드에서 다른 답변을 시도했지만 그들은 효과가 없었으며 속성에 동일한 값이 저장된 객체 컬렉션을 비교했지만 객체는 다릅니다.
메소드 호출 :
CompareIEnumerable(to, emailDeserialized.ToIndividual,
(x, y) => x.ToName == y.ToName && x.ToEmailAddress == y.ToEmailAddress);
비교 방법 :
private static void CompareIEnumerable<T>(IEnumerable<T> one, IEnumerable<T> two, Func<T, T, bool> comparisonFunction)
{
var oneArray = one as T[] ?? one.ToArray();
var twoArray = two as T[] ?? two.ToArray();
if (oneArray.Length != twoArray.Length)
{
Assert.Fail("Collections are not same length");
}
for (int i = 0; i < oneArray.Length; i++)
{
var isEqual = comparisonFunction(oneArray[i], twoArray[i]);
Assert.IsTrue(isEqual);
}
}
답변
이 테스트는 날짜 입력을 비교하고 윤년이 있는지 확인한 경우 입력 날짜에서 20 윤년을 출력하고 그렇지 않은 경우 NEXT 20 윤년을 출력하고 myTest를 테스트합니다. 필요한 계산 된 값을 포함하는 Testing이라는 목록에서 내가해야 할 운동의 일부.
[TestMethod]
public void TestMethod1()
{
int testVal = 2012;
TestClass myTest = new TestClass();
var expected = new List<int>();
expected.Add(2012);
expected.Add(2016);
expected.Add(2020);
expected.Add(2024);
expected.Add(2028);
expected.Add(2032);
expected.Add(2036);
expected.Add(2040);
expected.Add(2044);
expected.Add(2048);
expected.Add(2052);
expected.Add(2056);
expected.Add(2060);
expected.Add(2064);
expected.Add(2068);
expected.Add(2072);
expected.Add(2076);
expected.Add(2080);
expected.Add(2084);
expected.Add(2088);
var actual = myTest.Testing(2012);
CollectionAssert.AreEqual(expected, actual);
}
답변
List<AdminUser> adminDetailsExpected = new List<AdminUser>()
{
new AdminUser {firstName = "test1" , lastName = "test1" , userId =
"001test1" },
new AdminUser {firstName = "test2" , lastName = "test2" , userId =
"002test2" }
};
//행위
List<AdminUser> adminDetailsActual = RetrieveAdmin(); // your retrieve logic goes here
// 어설 션
Assert.AreEqual(adminDetailsExpected.Count, adminDetailsActual.Count); //Test succeeds if the count matches else fails. This count can be used as a work around to test
답변
유창한 어설 션은 배열을 깊이 비교합니다. actualArray.Should().BeEquivalentTo(expectedArray)