我正在尝试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
答案 0 :(得分:1)
尝试更换
System.Threading.Thread.Sleep(0);
同
thread.Join();
你真正想要的是等待第二个线程完成,而不是暂停当前线程。