有人可以阐明如何以纯 TDD 方式开发多线程功能吗? (可能有一些 C# 或 Java 示例)
提前致谢。
最佳答案
简而言之,
- 首先断言在线程上运行的代码可以工作。功能明智。简单的单元测试 - 无线程。您可以提取一个类型(示例名称 Executor)来抽象线程方面。例如Execute(codeblock) 在生产中生成一个新线程,在该线程上执行代码块。在测试中,代码块在调用线程上执行 - 就像函数调用一样。
- 接下来编写一个使用生产执行器的压力测试。生成多个线程并断言您的不变量。即无论产生多少线程,都必须/不可以发生的事情。
这还有一些其他细微差别 - 基于您是否生成多个线程(主动)或是否在不同线程上调用您(被动)。我建议您阅读 SteveFreeman 和 NatPryce 编写的 GOOS 书中与线程相关的章节
关于unit-testing - TDD 多线程应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11001106/