索引 -1 处的 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 都会导致断言失败并出现奇怪的错误:
预期和实际都是
1[System.String]`>有 1 个元素
索引 [0] 处的值不同
字符串长度均为 3。字符串在索引 -1 处不同。
预期:“Foo”
但是是:“Foo”
任何人都可以深入了解出了什么问题吗?这些元素对我来说看起来是一样的,索引 -1 应该只在 IndexOf()
错误时返回。
编辑:我正在使用 NUnit 2.5.7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试更换
System.Threading.Thread.Sleep(0);
和
thread.Join();
您真正想要的是等待第二个线程完成,而不仅仅是暂停当前线程。
try replacing
System.Threading.Thread.Sleep(0);
with
thread.Join();
What you actually want is to wait for the second thread to complete, not just pause the current one.