Junit для запускаемого класса и очереди - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть класс Processor, который реализует Runnable.

Первый метод

Public Processor implements Runnable{

 //"Event" is the name of this queue
 PersistentQueue<Event> persistentQueue = new PersistentQueue<>("Event");

 //add the Event POJO to the persistentQueue
 public void addToQueue(Event, event) {
     persistentQueue.add(event);         
}

PersistentQueue для хранения события POJO

И способ запуска

public void run() {
      while (true) {
       if (!persistentQueue.isEmpty()) {

        Event peekEvent = persistantQueue.peek();
        sendRequest(peekEvent);
      }
    }
  }

 public void sendRequest(Event, event){

  // do something to send the event
}

Для первого метода addToQueue я написал тест

public class ProcessorTest {

   private Event event;
   private Processor m_Processor;

  @Before
  public void setup() throws IOException {
  //the Processor class is a singleton
  m_Processor = Processor.getProcessor();
  event = new Event();
 }

  @Test
  public void test(){
   PersistentQueue<Event> persistentQueue = new PersistentQueue<> 
 ("Event");
    m_Processor.addToQueue(event);
    assertEquals(1, persistentQueue.size());
  }
}

Но размер очереди равен 0, а не 1. Я не знаю, в чем проблема. И у меня также есть вопрос о том, как проверить метод запуска?

1 Ответ

0 голосов
/ 12 ноября 2018

В вашем методе test вы создали новую очередь, которая не имеет ничего общего с вашим экземпляром m_Processor;он полностью не используется.Вам нужно изменить свой код, чтобы вы могли получить экземпляр PersistentQueue, содержащийся в вашем экземпляре m_Processor.Предполагая, что у вас есть метод получения с именем getPersistentQueue внутри Processor, вы можете использовать следующее:

@Test
public void test() {
    m_Processor.addToQueue(event);
    assertEquals(1, m_Processor.getPersistentQueue().size());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...