有没有办法用mockito测试这些方法

时间:2017-02-14 06:43:52

标签: java junit mockito

由于此方法在运行时执行,因此需要对其进行测试

public void addListener(RepeatRejectAnalysis_Listener rralistener)
{
    Save_Button.addActionListener(rralistener);
    Cancel_Button.addActionListener(rralistener);
}

2 个答案:

答案 0 :(得分:2)

你可能甚至不需要Mocking框架。

如果您可以访问按钮;你可以简单地调用那个方法;然后断言每个按钮在其ActionListeners列表中都有新的侦听器。

换句话说:当您在单元测试环境中创建对象时,模拟事物。例如:一些想要与数据库通信的客户端可能需要进行模拟;但是简单的JButton ......可能不是。

请理解:模拟框架始终是第二选项。如果可能,您希望直接在生产代码元素上断言/验证。因此,不要使用模拟按钮,而是专注于能够使用真实按钮运行测试,并使用这些按钮提供的接口来验证预期的行为。

答案 1 :(得分:1)

一般情况下,由于没有业务逻辑,因此不需要测试此类方法。

但是,如果您急于这样做,可以检查是否为具有相同输入参数的两个不同对象调用了addActionListener方法。类似这样:

// SETUP SUT
RepeatRejectAnalysis_Listener yourRraListener = new RepeatRejectAnalysis_Listener(); 

// EXERCISE
yourClass.addListener(yourRraListener);

// VERIFY
Mockito.verify(Save_Button, Mockito.times(1)).addActionListener(yourRraListener);
Mockito.verify(Cancel_Button, Mockito.times(1)).addActionListener(yourRraListener);

在这种情况下,您需要在测试中模拟Save_ButtonCancel_Button