首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试基于线程的代码?强制竞争条件

单元测试基于线程的代码?强制竞争条件
EN

Stack Overflow用户
提问于 2010-12-14 11:12:48
回答 1查看 1.8K关注 0票数 8

在使用我的应用程序时,我在一些代码中偶然发现了一个竞态条件,它使用NSOperationQueue在用户触发的事件之后异步运行任务。我知道如何修复竞争条件,因为这是一个愚蠢的设计错误,我不会深入研究,但我想用一个测试用例来证明这个错误(这样它在优化/重构过程中就不会再出现)。这把我难倒了。如何测试多线程的东西,特别是当测试的目的是生成竞争条件时?

当涉及到线程和单元测试时,有没有人有我可以参考的参考资料链接?我对竞态条件生成特别感兴趣。

EN

回答 1

Stack Overflow用户

发布于 2010-12-14 11:18:40

您必须确保导致竞争条件的事件序列在测试过程中实际出现。为此,您需要影响测试用例中的线程交错。

您可以通过附加(有条件的)同步或(更简单且不太可靠的)附加计时器来实现这一点。将一些sleep()调用放入临界区,以确保它们运行足够长的时间,以便其他线程到达不需要的状态。当你让它工作时,用显式同步替换休眠调用(即阻塞一个线程,直到另一个线程实际确认已经到达)。

然后,这一切都以测试用例设置的全局标志为条件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4435545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档