如何对执行程序服务中运行的代码进行单元测试? 在我的情况,如何对执行程序服务中运行的代码片段进行单元测试,而不是等待Thread.sleep(时间)
public void test() {
Runnable R = new Runnable() {
@Override
public void run() {
executeTask1();
executeTask2();
}
};
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(R);
}
当我的单元测试,我想提出一些验证该方法执行。
我在执行程序服务中执行此操作,因为它执行一些网络操作。
在我的单元测试中,我必须等到这个方法结束执行。有没有更好的方式可以做到这一点,而不是等待Thread.sleep(500)
。
单元测试代码片段:
@Test
public void testingTask() {
mTestObject.test();
final long threadSleepTime = 10000L;
Thread.sleep(threadSleepTime);
verify(abc, times(2))
.acquireClient(a, b, c);
verify(abd, times(1)).addCallback(callback);
}
注:我传递一个执行服务对象到这个构造函数的类。 我想知道是否有一种很好的测试方式,而不是等待睡眠时间。
但要注意,我的方法,这里说executeTask1()和executeTask2(),这里是私人的方法和他们没有任何返回类型。我没有找到这种可靠的测试方式。你能建议为什么这是可靠的方式吗? –
我不认为我可以在没有看到它们的实现的情况下为'executeTask1()'和'executeTask2()'测试的细节提供很多帮助。我不认为我可以提供任何帮助:“我没有找到这种测试可靠的方式”,而没有看到你迄今为止尝试过的。如果您正在尝试修改代码以便从我的答案中选择选项1或选项2,那么可能会提供一个解决特定问题并提供[MCVE](https://stackoverflow.com/help/mcve)的单独问题? – glytching