条件 if 对于 Nunit 断言
Condition if for Nunit assert
我需要用 NUnit 的 Assert.AreEqual
比较两个 List
。如果这个陈述是错误的(列表不一样)——那么我需要在列表中找到不一样的元素。
我如何使用 If 语句来断言 return true
或 false
?
这是一个可能的解决方案。
[Test]
public void TestMethod1()
{
List<int> a = new List<int>();
List<int> b = new List<int>();
//Fake data
a.Add(1);
b.Add(2);
b.Add(2);
Assert.IsTrue(AreEquals(a,b), GetDifferentElements(a,b));
}
private string GetDifferentElements(List<int> a, List<int> b)
{
if (AreEquals(a, b))
{
return string.Empty;
}
if (a.Count != b.Count)
{
return "The two lists have a different length";
}
StringBuilder s = new StringBuilder();
for (int i = 0; i < a.Count; i++)
{
if (a[i] != b[i])
{
s.Append(i.ToString() + " ");
}
}
return string.Format("Elements at indexes {0} are different", s.ToString());
}
private bool AreEquals(List<int> a, List<int> b)
{
if (a.Count != b.Count)
{
return false;
}
for (int i = 0; i < a.Count; i++)
{
if (a[i] != b[i])
{
return false;
}
}
return true;
}
更新
当然我不知道接受的答案中提供的 CollectionAssert.AreEquivalent 方法。那当然是更好的解决方案!
看来 nunit CollectionAssert.AreEquivalent 正是您要找的东西。
此方法比较集合。
如果发现不匹配,则该方法将抛出不同的异常。
我需要用 NUnit 的 Assert.AreEqual
比较两个 List
。如果这个陈述是错误的(列表不一样)——那么我需要在列表中找到不一样的元素。
我如何使用 If 语句来断言 return true
或 false
?
这是一个可能的解决方案。
[Test]
public void TestMethod1()
{
List<int> a = new List<int>();
List<int> b = new List<int>();
//Fake data
a.Add(1);
b.Add(2);
b.Add(2);
Assert.IsTrue(AreEquals(a,b), GetDifferentElements(a,b));
}
private string GetDifferentElements(List<int> a, List<int> b)
{
if (AreEquals(a, b))
{
return string.Empty;
}
if (a.Count != b.Count)
{
return "The two lists have a different length";
}
StringBuilder s = new StringBuilder();
for (int i = 0; i < a.Count; i++)
{
if (a[i] != b[i])
{
s.Append(i.ToString() + " ");
}
}
return string.Format("Elements at indexes {0} are different", s.ToString());
}
private bool AreEquals(List<int> a, List<int> b)
{
if (a.Count != b.Count)
{
return false;
}
for (int i = 0; i < a.Count; i++)
{
if (a[i] != b[i])
{
return false;
}
}
return true;
}
更新
当然我不知道接受的答案中提供的 CollectionAssert.AreEquivalent 方法。那当然是更好的解决方案!
看来 nunit CollectionAssert.AreEquivalent 正是您要找的东西。
此方法比较集合。 如果发现不匹配,则该方法将抛出不同的异常。