Ray*_*eng 166 c# unit-testing mstest visual-studio-2010
这个测试怎么会失败?
[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
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 341
要对集合进行断言,您应该使用CollectionAssert:
CollectionAssert.AreEqual(expected, actual);
Run Code Online (Sandbox Code Playgroud)
List<T>不会覆盖Equals,所以如果Assert.AreEqual只是调用Equals,它将最终使用引用相等.
Shy*_*yju 31
我想这会有所帮助
Assert.IsTrue(expected.SequenceEqual(actual));
Run Code Online (Sandbox Code Playgroud)
top*_*101 15
如果要检查每个包含相同的值集合,则应使用:
CollectionAssert.AreEquivalent(expected, actual);
Run Code Online (Sandbox Code Playgroud)
编辑:
"如果两个集合具有相同数量的相同元素,则可以是等价的,但是如果它们的值相等,则元素相等,而不是它们引用同一个对象." - https://msdn.microsoft.com/en-us/library/ms243779.aspx
Dec*_*lan 14
我在这个帖子中尝试了其他答案,但它们对我不起作用,而且我正在比较在属性中存储了相同值的对象集合,但对象不同.
方法调用:
CompareIEnumerable(to, emailDeserialized.ToIndividual,
(x, y) => x.ToName == y.ToName && x.ToEmailAddress == y.ToEmailAddress);
Run Code Online (Sandbox Code Playgroud)
比较方法:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
此测试比较日期输入,检查是否为闰年,如果是,则从输入日期输出20闰年,如果不是,则输出NEXT 20闰年,myTest.Testing指的是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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79372 次 |
| 最近记录: |