我正在做这个简单的,我得到这个错误。当我将TRUE更改为FALSE时它不会给出错误,但测试真正的错误...但我需要测试通过,我不明白..任何人都可以帮忙吗? C#visual studio 2010 NUnit
[Test]
public void prueba1()
{
List<int> lista1 = new List<int>();
lista1.Add(1);
lista1.Add(2);
lista1.Add(3);
for (int i = 0; i < lista1.Count; i++)
{
Console.WriteLine(lista1[i]);
Assert.True(lista1[i]<lista1[i+1]);
}
答案 0 :(得分:3)
列表中的有效索引是0到2. lista1.Count
将是3,因此i
从0变为2.当i
为2时,您尝试访问{{ 1}},超出范围。
答案 1 :(得分:2)
您的清单是[1,2,3]
在每次迭代中,正在检查以下语句
1&lt; 2
2&lt; 3
3&lt; ?
在Assert.True和Assert.False中,如果检查的条件与函数调用不同,则抛出AssertFailedException错误。(Assert.True需要为True)
Assert.True(1 <2)有效,
Assert.True(2 <3)有效,
Assert.True(3&lt;?) - 将发生Out of Bounds异常。
Assert.False(1&lt; 2) - 将发生AssertFailedException。
答案 2 :(得分:0)
i+1
是错误的地方。更改。为什么?
你的索引应该从0开始直到2,但是错误出现在最后一个索引中,因为它试图搜索i + 1
索引,这意味着它正在搜索lista1[3]
,因为索引开始不存在从0到1,比收集的长度少1。