Multithreading Thread Thread=新线程(()->;{/code})和Executorservice.submit(线程)。如何使用powermock在此线程上编写junit
请帮助我使用Mockito/Powermock为这段代码编写Junit,因为lamda表达式和executor服务的缘故,我觉得这很困难Multithreading Thread Thread=新线程(()->;{/code})和Executorservice.submit(线程)。如何使用powermock在此线程上编写junit,multithreading,junit,mockito,executorservice,powermockito,Multithreading,Junit,Mockito,Executorservice,Powermockito,请帮助我使用Mockito/Powermock为这段代码编写Junit,因为lamda表达式和executor服务的缘故,我觉得这很困难 public class myClass { ExecutorService executorService; public void testMethod(String a){ Thread thread = new Thread(() -> { //logic a=
public class myClass {
ExecutorService executorService;
public void testMethod(String a){
Thread thread = new Thread(() -> {
//logic
a= testDAo.getStatus();
while (true) {
if (Thread.interrupted()) {
break;
}
if (a() != "done" || a() != "fail") {
Thread.yield();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
} else {
break;
}
}
}
Future task = executorService.submit(thread);
while (!task.isDone()) {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
}
}
}
这里有很多东西:
- 首先:对于测试执行器和并行执行,使用a非常有用(因为它去掉了并行方面)
- 您在编写单元测试时遇到困难,因为您的生产代码太复杂了
- 我会去掉“内线程”——让执行器任务等待结果可用
- 然后:如果lambda给你带来麻烦,那么就不要使用它们。只需创建一个实现该代码的命名小类。然后你就可以为这个小类编写单元测试。换句话说:不要创建做5件不同事情的巨大“单元”。一个好的单元的本质是做一件事(单一责任原则!).一旦你遵循了这个想法,测试也变得容易多了