【发布时间】:2012-05-14 15:28:41
【问题描述】:
有一个接口:
interface IEventListener
{
void onEvent(List <IEvent> events);
}
有一个事件类:
class EventB
{
private final int id;
private final A a;
private final String somethingElse;
...
// constructors, getters
...
}
还有一个类要测试:
class Doer
{
IEventListener eventListener;
void doSomething(Aaa a)
{
eventListener.onEvent(Arrays.asList(new EventA(1), new EventC(2)));
...
eventListener.onEvent(Arrays.asList(new EventB(42, a.getA(), "foo"), new EventA(3), new EventB(0, a.getA(), "bar")));
...
eventListener.onEvent(Arrays.asList(new EventC(4)));
}
}
Doer 是我需要测试的代码,doSomething 方法产生事件包,我需要测试它是否在某些特定条件下产生特定事件。
更准确地说,我想要一个单元测试,它调用方法 doSomething 并检查 EventB 是否使用“42”和 A 从方法参数 a 发送。应忽略所有其他事件。
为了进行这样的测试,我只提出了包含 ArgumentCaptor、for 块和魔术布尔标志的非常冗长代码的解决方案...
对其进行单元测试的最佳方法是什么?可能是代码设计不好?
【问题讨论】:
标签: java unit-testing junit mockito