Я использую JDK ScheduledThreadPoolExecutor для выполнения задания schdule. Я даю простой код, как показано ниже.Для проблемы Junit: при тестировании нескольких потоков
class Job implements Callable<Void>{
public Long id;
@Override
public Void call() throws Exception {
if (!isOk(id)) {
return null;
}
_context.exe(id);
return null;
}
void setId(Long id) {
this.id = id;
}
}
Каждый раз, когда я добавить эту работу, чтобы запланировать обслуживание:
public void schedule() {
Job job = new Job();
job.setId(1L);;
_scheduledExecutor.schedule(job, 1000, TimeUnit.MILLISECONDS) ;
}
эта работа задержит ехе метод контекста вызова в. Мой вопрос: я хочу, чтобы метод exe assertconcontext вызывался или нет? Как я могу это сделать?
Что я делаю сейчас, я пытаюсь добавить метод входа в систему() и проверить UT своими глазами. PS: Для этого UT я также пытаюсь издеваться над exe-методом _context, но работа выполняется в другом потоке, поэтому я не могу утверждать его в текущем потоке. у кого есть идея помочь мне написать заявление для этого случая?
В настоящее время я делаю это ниже, но я все еще думаю, что это лучшее решение для этого, просто я не знаю.
_context - это экземпляр контекста, я распространяюсь из этого класса.
public class UTContext extends Context {
public UTTestCase utTestCase ;
@Override
public void exe(Long id) {
utTestCase.setIsCall(true);
}
public void setUtTestCase(UTTestCase utTestCase) {
this.utTestCase = utTestCase;
}
}
Тогда я буду утверждать isCall вар в UT.
Есть ли у кого-нибудь хорошие идеи для этого, PLS дать мне ответ. Большое спасибо.
PS: То, что я пытаюсь сделать: создать _context класса расширить существующие _context и перезаписать выездную метод ехе, я установлю этот экземпляр обратно к тестируемому классу, когда он создал , и в этом поддельном exe-методе я напишу код, чтобы изменить класс, на который подано заявление для проверки, вызывается или нет. Но я все еще думаю, что это плохой способ проверить это. Любая хорошая идея для этого. Спасибо всем, кто дает мне идеи. – Bensson