Я работаю над написанием теста junit для моего весеннего приложения. Ниже мой тест junit, который вызывает метод afterPropertiesSet
моего класса InitializeFramework
, который реализует интерфейс InitializingBean.ScheduledExecutorService не работает во время моего теста junit
Ниже поток, где мой JUnit тест вызывает afterPropertiesSet
метод, а затем этот метод будет вызывать initializeModel
метод в одном классе, а затем этот метод имеет планировщик, который будет вызывать getBundlesInfo
методы каждые несколько минут. Но почему-то во время моего junit метод getBundlesInfo
вообще не называется.
@Test
public void testFramework() {
try {
InitializeFramework io = new InitializeFramework();
io.afterPropertiesSet();
} catch (Exception e) {
}
}
public class InitializeFramework implements InitializingBean {
private static long checkWithDBInterval = 1L;
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
@Override
public void afterPropertiesSet() throws Exception {
try {
// other code here
initializeModel();
} catch (Exception e) {
}
}
private void initializeModel() {
final ScheduledFuture<?> taskHandle = scheduler.scheduleAtFixedRate(
new Runnable() {
public void run() {
try {
getBundlesInfo();
} catch(Exception ex) {
// log exception here
}
}
}, 0, checkWithDBInterval, TimeUnit.MINUTES);
}
// this method is not getting called from my junit test
protected static void getBundlesInfo() {
// some code here
// have put the breakpoint here..
}
}
Может ли кто-нибудь помочь мне в этом? Что я тут делаю? но во время моего приложения запуска, этот поток работает прекрасно и getBundlesInfo вызывается ... Только в JUnit он не работает ..
Я бы предположил, что код зависит от некоторых других ресурсов, которые не работают. У вас должен быть метод, который инициализирует все необходимые ресурсы. Используйте его вместе с аннотацией '@ BeforeClass'. – mike