【发布时间】:2018-11-24 04:23:09
【问题描述】:
我有一堂这样的课。 start 方法将在另一个类(如预加载类)中调用
public class Processor implements Runnable{
private PersistantQueue<object> m_persistentQueue;
private Thread m_thread;
//this class is a singleton class
protected int getQueueSize() {
return m_persistentQueue.size();
}
protected void addToQueue(Object object) {
m_persistentQueue.add(object);
}
public void start() {
m_persistentQueue = new PersistantQueue<object>("queueName");
m_thread = new Thread(new Processor());
m_thread.start();
}
//run method......
}
这是单元测试
public class AuditEventProcessorTest {
private Processor m_processor
@Before
public void setup() {
m_Processor = Processor.getProcessorInstance();
m_Processor.start();
}
@After
//some cleanup after adding items to the queue
@Test
public void addToQueue_addSuccessfully() {
m_Processor.addToQueue(someMockObject);
assertEquals(1, m_Processor.getQueueSize());
}
}
我调用真正的方法将项目添加到队列中。但现在我想模拟队列只是测试逻辑。我不想在单元测试中将项目添加到队列中。如何正确模拟队列?尝试模拟但得到空指针异常。我只能使用 Mockito。请帮我。谢谢!
【问题讨论】:
-
我认为你的问题的答案可能包含在my article here
-
如果需要,您可以将处理器类的行为提取到接口中并模拟其方法。请记住,单元测试主要是关于测试业务需求的概念。
标签: java unit-testing junit mockito