在Java中单元测试线程安全有什么令人满意的方法吗?
我正在考虑改进一个包,我认为它在多个工作线程之间共享输入时不是线程安全的。根据TDD原则,我应该编写一些首先失败的测试,这些测试肯定会对评估问题有所帮助。
我意识到这不是一件简单的事情,而且天真的多线程测试将是非确定性的,因为操作系统将确定调度和各种操作交错的确切顺序。我过去看过并使用过多线程TC,这很有用。但是,在这种情况下,我事先确切地知道现有实现在哪里下降,因此能够编写一组很好的测试来涵盖它。
但是,如果您还没有确切地知道问题所在,那么是否有一种好方法可以编写一个很有可能抛出任何潜在问题的测试?有没有其他人认为有用的库?我认为从纯粹主义的角度来看,多线程测试用例应该与通常的单线程测试具有相同的调用和断言,并且仅在适当的情况下使用多个工作线程运行,我的想法是否正确?
欢迎就一般的工具/最佳做法/理念提出任何建议。