### Question:
ProvidersYahooCrumb extends Providers implements QuotationProvider, MarketListProvider { @Override public void getQuotes(Stock stock, Date start, Date end) throws HttpException, SQLException { if (stock.getSymbol() == null) throw new RuntimeException("Error : no Symbol for "+stock.toString()); List<Validatable> readPage = null; int retries = 0; Calendar cStrat = Calendar.getInstance(); cStrat.setTime(start); while (readPage == null && retries < 2) { try { readPage = readCrumedPage(stock, cStrat.getTime(), end); } catch (InvalidAlgorithmParameterException e1) { return; } catch (HttpException he) { cStrat.add(Calendar.DAY_OF_MONTH, -1); } finally { retries++; } } if (readPage == null) throw new HttpException(); TreeSet<Validatable> queries = initValidatableSet(); queries.addAll(readPage); LOGGER.guiInfo("Getting last quotes: Number of new quotations for "+stock.getSymbol()+" :"+queries.size()); LOGGER.debug(queries); try { ArrayList<TableLocker> tablet2lock = new ArrayList<TableLocker>(); tablet2lock.add(new TableLocker(DataSource.QUOTATIONS.TABLE_NAME,TableLocker.LockMode.NOLOCK)); DataSource.getInstance().executeInsertOrUpdateQuotations(new ArrayList<Validatable>(queries), tablet2lock); } catch (SQLException e) { LOGGER.error("Yahoo quotations SQL error trying: "+stock+" between "+start+" and "+end, e); throw e; } } protected  ProvidersYahooCrumb();  ProvidersYahooCrumb(String pathToProps); @Override void getQuotes(Stock stock, Date start, Date end); List<Validatable> readPage(Stock stock, MyUrl url, Date  start); @Override void retrieveAndCompleteStockInfo(Stock stock, StockList stockList); @Override String getStockRefName(Stock ticker); MyUrl resolveUrlFor(Stock stock, Date start, Date end); @Override StockList retrieveStockListFromWeb(MarketQuotationProviders marketQuotationsProviders, StockList stocksInDB); @Override void updateStockListFromWeb(MarketQuotationProviders marketQuotationsProviders); @Override MarketQuotationProviders defaultMarketQuotationProviders(); @Override void addIndices(SortedSet<Indice> indices, Boolean replace); @Override SortedSet<Indice> getIndices(); @Override SharesListId getSharesListIdEnum(); @Override void retrieveStockListFromBase(StockList dbStockList); @Override Stock supplement(Stock stock); @Override SharesList loadSharesListForThisListProvider(); @Override StockList retreiveStockListFromFile(String pathToFileList, StockList dbStockList); @Override void retrieveScreeningInfo(Collection<Stock> shareListInDB);  }### Answer:
@Test public void testGetQuotes() throws Exception { Stock stock = new Stock(); stock.setSymbol("AAPL"); stock.setIsin("AAPL"); stock.setName("AAPL"); stock.setMarketValuation(new MarketValuation(Market.NASDAQ)); stock.setCategory(StockCategories.DEFAULT_CATEGORY); Date start = new SimpleDateFormat("dd/MM/yyyy").parse("17/02/2018"); Date end = new SimpleDateFormat("dd/MM/yyyy").parse("20/02/2018"); providersYahooCrumb.getQuotes(stock, start, end); }