索引为-1时的NUnit错误

时间:2010-08-08 03:41:24

标签: c# nunit

我正在尝试NUnit测试从新线程向集合添加元素。这是我正在使用的测试功能:

[Test]
public void WorkerThreadAccess()
{
    string foo = "Foo";
    Collection<string> collection = new Collection<string>();
    System.Threading.Thread thread = 
              new System.Threading.Thread(() => collection.Add(foo));
    thread.Start();

    Collection<string> expected = new Collection<string> { foo };
    System.Threading.Thread.Sleep(0);
    CollectionAssert.AreEqual(expected, collection);
}

当我运行一次测试时,它会通过。但是,在没有关闭NUnit GUI的每个后续测试中,NUnit都会在Assert中失败并出现一个奇怪的错误:

  

预期和实际都是<System.Collections.ObjectModel.Collection 1 [System.String]`&gt; 1个元素
    值[0]的值不同     字符串长度均为3.字符串在索引-1处不同。
    预计:“Foo”
    但是:“Foo”

任何人都可以对出现的问题有所了解吗?这些元素对我来说看起来一样,索引-1只应在IndexOf()错误时返回。

编辑:我正在使用NUnit 2.5.7

1 个答案:

答案 0 :(得分:1)

尝试更换     System.Threading.Thread.Sleep(0); 同     thread.Join();

你真正想要的是等待第二个线程完成,而不是暂停当前线程。