我有一个实现Runnable的Processor类。
第一种方法
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。我不知道这是什么问题。我也有关于如何测试运行方法的问题?
答案 0 :(得分:1)
在您的test
方法中,创建了一个与m_Processor
实例无关的新队列;它完全没有使用。您需要更改代码,以便获得PersistentQueue
实例中包含的m_Processor
实例。假设您在getPersistentQueue
中有一个名为Processor
的getter方法,则可以使用以下方法:
@Test
public void test() {
m_Processor.addToQueue(event);
assertEquals(1, m_Processor.getPersistentQueue().size());
}