如何在Java中有效地测试(单元/集成)并发代码?

non*_*tor 18 java testing multithreading

我已经在SO上看过这篇文章,但至少对Java而言,它仍然存在问题.对于任何应用程序(我正在测试此用例的Web应用程序)而言,这似乎是一个紧迫的问题,这是多线程的.你们是如何以允许线程交错的方式处理它的 - 本质上意味着测试随机线程行为.

Bri*_*new 9

我认为这本来就很困难,因为你想要证明某个(可能)非决定性系统中缺少某些东西.话虽如此,总是值得编写可重复的测试来强调你的多线程组件.如果出现问题,您可能无法重复,但您可以通过检查找到错误.因此,请确保您的测试非常详细地记录相关的异常(以及可能的输入参数等)

它还值得运行静态代码分析器.这些将获取(除其他外)变量的不一致同步,并立即突出显示需要关注的区域.FindBugs就是这样一个工具.