【发布时间】:2012-04-25 21:37:27
【问题描述】:
您会推荐哪些框架来为 Java 中的多线程代码编写单元测试?例如,当您有一个程序应该执行具有多个允许执行路径和某些排除路径的线程时(例如“可执行单元 1、2 和 3 可以并行运行,至少应该运行两个并行,并且 4 总是必须在 3" 之后运行)。
【问题讨论】:
标签: java multithreading unit-testing concurrency
您会推荐哪些框架来为 Java 中的多线程代码编写单元测试?例如,当您有一个程序应该执行具有多个允许执行路径和某些排除路径的线程时(例如“可执行单元 1、2 和 3 可以并行运行,至少应该运行两个并行,并且 4 总是必须在 3" 之后运行)。
【问题讨论】:
标签: java multithreading unit-testing concurrency
我建议阅读 JUnit @Rule 以将它们用于并发测试。
【讨论】:
我推荐ContiPerf2,因为它是一个非常易于使用的框架。虽然我认为它不会提供声明执行路径或类似内容的可能性。
【讨论】:
您可以使用参数化的 JUnit 测试,如下所述:http://junit.org/junit/javadoc/4.5/org/junit/runners/Parameterized.html
但您需要自己编写线程逻辑,例如使用不同的线程池。
如果你想证明你的代码是线程安全的,你可以看看 pathfinder (http://javapathfinder.sourceforge.net/)。
【讨论】:
这个线程描述了一些测试并发代码的通用方法。
Designing a Test class for a custom Barrier
对于特定的框架,tempus-fugit 有一些 JUnit rules to run things in parallel,但如上所述,您的测试可能必须包含更多逻辑。
【讨论】: