我认为Thread-weaver测试框架可以帮助你。自从我尝试过它已经有一段时间了,但它确实允许您强制执行特定的时间安排。它也可以在两种方法之间进行大量交错测试的默认模式下运行。
这是一个简单的示例性测试(使用默认交织)
public class MyListTest {
private MyList<String> list;
@Test
public void testThreading() {
AnnotatedTestRunner runner = new AnnotatedTestRunner();
// Run all Weaver tests in this class, using MyList as the Class Under Test.
runner.runTests(this.getClass(), MyList.class);
}
@ThreadedBefore
public void before() {
list = new MyList<>();
}
@ThreadedMain
public void mainThread() {
list.putIfAbsent("A");
}
@ThreadedSecondary
public void secondThread() {
list.putIfAbsent("A");
}
@ThreadedAfter
public void after() {
assertThat(list).hasSize(1);
}
}