【发布时间】:2019-11-17 13:46:51
【问题描述】:
我需要从公共 API 收集数据。我想每天或每天收集两次。
public class AlphavantageStockRequestDispatcher {
public static void startAlphavantageStockScraper(int timeInterval) {
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Runnable getStockList =
new Runnable() {
@Override
public void run() {
List<AlphavantageStock> stocks = AlphavantageStockRequest.getStockPrices(); //Method contains requests
StockDao<AlphavantageStock> dao = new JpaAlphavantageStockDao();
for (AlphavantageStock stock : stocks) {
dao.save(stock);
}
}
};
scheduler.scheduleAtFixedRate(getStockList, 0, timeInterval, TimeUnit.HOURS);
}
}
问题是当我从同一个类启动它时(只是添加了 main 方法并调用了startAlphavantageStockScraper(1); 它工作正常。但是当我想通过 JUnit 测试它时它不起作用(测试类在对称包名称中但 @ 987654323@子文件夹):
public class AlphavantageStockRequestDispatcherTest {
@Test
public void startDispatcher_TwoFullCycles_WithOneHourIntervalBetween() {
AlphavantageStockRequestDispatcher.startAlphavantageStockScraper(1);
}
}
在调试时我发现在单元测试执行中程序到达public void run() 行然后跳过它。所以没有错误。程序正确结束,但没有任何用处。
任何帮助将不胜感激。
【问题讨论】:
标签: java multithreading junit scheduled-tasks runnable