我在C#上实现了并发循环缓冲区,现在想测试它的工作。我有非常简单的API - void Write(T element)
和T Read()
。我正在寻找一个很好的例子,如何测试所有可能的用例并检测所有可能的错误,包括竞争条件。简单的替代写入和从2个线程读取似乎不是一个好主意,因为我们无法控制顺序来自不同线程的API调用。
答案 0 :(得分:3)
其中一个用例应该包括写入缓冲区(不读取它)直到缓冲区已满。
如果您的测试用例实现了从同一个线程的读写,那么您可以控制读/写的顺序。
当多线程代码中线程安全的实现足够简单,可以“通过检查”验证时,即通过代码审查(而不仅仅是通过测试),我喜欢它。