0

我这样做很简单,我得到了这个错误。当我将 TRUE 更改为 FALSE 时,它不会给出该错误,但测试是真正的错误......但我需要通过测试,但我不明白......有人可以帮忙吗?C# 视觉工作室 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]);

    }
4

3 回答 3

3

列表中的有效索引是 0 到 2。lista1.Count将是 3,所以i从 0 到 2。当i是 2 时,您尝试访问lista1[i+1]超出范围。

于 2012-05-07T01:40:39.857 回答
2

您的列表是 [1,2,3]

在每次迭代中,都会检查以下语句。
1 < 2
2 < 3
3 < ?

在 Assert.True 和 Assert.False 中,如果被检查的条件与函数调用不同,则会抛出 AssertFailedException 错误。(Assert.True 需要 True)

Assert.True(1 < 2) 有效,
Assert.True(2 < 3) 有效,Assert.True(3 < ?) - 将发生越界异常。

Assert.False(1 < 2) - 将发生 AssertFailedException。

于 2012-05-07T01:55:39.487 回答
0

i+1是错误的地方。更改。为什么?

您的索引应该从 0 开始,一直到 2,但最后一个索引出现错误,因为它尝试搜索i + 1索引,这意味着它正在搜索lista1[3]不存在的索引,因为索引从 0 开始,直到 1 小于集合的长度。

于 2012-05-07T01:41:34.820 回答