【问题标题】:Wanted but not invoked Mockito - Actually there were 0 interactions with this mock想要但未调用 Mockito - 实际上有 0 次与此模拟的交互
【发布时间】:2014-06-21 01:42:13
【问题描述】:

我试了下还是一样的错误:

我尝试了以下方法:

public interface InventorydetailQuery extends InventorydetailDAO {

    public static final String GET_UNFIT_UNSORTED_INVENTORYDETAIL = "Inventorydetail.getInventorydetailUnfitUnsorted";

    public static final String GET_UNASSIGNED_INVENTORYDETAIL_BY_DENOM_AND_SUBTYPE = "Inventorydetail.getUnassingedInventorydetailByDenomAndSubType";

    public static final String GET_UNASSIGNED_INVENTORYDETAIL_BY_REEL = "Inventorydetail.getUnassingedInventorydetailByReel";

    public static final String GET_UNFIT_INVENTORYDETAIL_BY_DENOM_AND_SUBTYPE = "Inventorydetail.getUnfitInventorydetailByDenomAndSubType";

    public List<Inventorydetail> getUnfitUnsortedInventorydetail(
            BigDecimal facevalue, String teamname, Integer fedofficekey);

    public List<Inventorydetail> getUnassingedInventorydetailByDenomAndSubType (BigDecimal facevalue, String inventorySubType, 
            String inventoryType, String valuableType, Integer fedTeamKey);


    public List<Inventorydetail> getUnfitInventorydetailByDenomAndSubType (BigDecimal facevalue, String inventorySubType, 
            String inventoryType, String valuableType, Integer fedTeamKey);



    public List<Inventorydetail> getUnassingedInventorydetailByReel (BigDecimal facevalue, String inventorySubType, 
            String inventoryType, String valuableType, Integer fedTeamKey, Integer bpsreelkey);

}


@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {


    @Mock 
    private BPSReelQuery mockBPSReelQuery;

    @Mock
    private BpsreelDAOImpl reelDAO;

    @Mock 
    private InventorydetailQuery mockInventorydetailQuery;

    @Mock
    private InventorydetailDAO mockInventorydetailDAO;



    @Test
    public void testgetBPSReels(){
        when(mockBPSReelQuery.getBpsreelDetails(FED_TEAM_KEY, CURRENT_BUSINESS_DATE)).thenReturn(getBPSReelDetails());
        List<ShiftReelImportedBean> shiftReelImportedBean = processReelsAutomaticModeService.getBPSReelDetails(FED_TEAM_KEY);
        assertNotNull(shiftReelImportedBean);
        verify(mockBPSReelQuery).getBpsreelDetails(FED_TEAM_KEY, CURRENT_BUSINESS_DATE);
    }

    @Test
    public void testBalanceReel_Scenario1() {
        ReelBalanceBean reelBalanceBean = createReelBalanceBean(VerificationConstants.RS_NORMAL, VerificationConstants.RS_FINISHED);        
        CPFirstRunBean cpFirstRunBean=new CPFirstRunBean();
        RSNormalBean rsNormalBean=new RSNormalBean();       
        RecapBean recapBean = createRecapBean(BigDecimal.ZERO);

        Bpsreel bpsReel = createBpsReel();          
        when(mockBPSReelQuery.store(bpsReel)).thenReturn(bpsReel);  
        when(mockBPSReelQuery.findBpsreelByPrimaryKey(any(Integer.class))).thenReturn(bpsReel); 
        List<Inventorydetail> inventoryDetailsList = createInventoryDetailsList();

        when(mockInventorydetailQuery.getUnassingedInventorydetailByDenomAndSubType(reelBalanceBean.getFaceValue(), 
                        VerificationConstants.INVENTORY_SUB_TYPE_UNSORTED, VerificationConstants.INVENTORY_TYPE_UNSORTED, 
                        VerificationConstants.VALUABLE_TYPE_CURRENCY, FED_TEAM_KEY)).thenReturn(inventoryDetailsList);  
        verify(mockInventorydetailQuery).getUnassingedInventorydetailByDenomAndSubType(reelBalanceBean.getFaceValue(), 
                VerificationConstants.INVENTORY_SUB_TYPE_UNSORTED, VerificationConstants.INVENTORY_TYPE_UNSORTED, 
                VerificationConstants.VALUABLE_TYPE_CURRENCY, FED_TEAM_KEY);
    }
}

仍然得到相同的异常。我们将不胜感激任何解决此问题的提示。

谢谢,

MS

【问题讨论】:

  • 你能分享你的测试对象吗?
  • 我建议声明你的对象在测试中并用@InjectMocks标记它。
  • 如果您 (1) 不向我们展示您要测试的代码,(2) 不向我们展示如何您正在创建您正在尝试测试的对象,(3)不要向我们展示您的测试类中实际与您正在测试的对象交互的方法,以及(4)不要指出哪个你的测试实际上失败了?在您真正向我们展示失败的代码之前,这个问题是完全无法回答的。
  • 抱歉,您仍然没有提供我们需要帮助您的所有信息。另外,代码太多了。简化你的问题。在这个过程中,你甚至可以自己找到答案。根据您提供的信息,无法判断您的测试对象是什么,更不用说该对象的问题所在了。

标签: junit mockito


【解决方案1】:

还不足以给出明确的答案。这与我期望看到的类似。

Reel.java:

package org.makeyourcase;

public interface Reel {
}

ReelQuery.java:

package org.makeyourcase;

public interface ReelQuery {
    void store(Reel reel);
}

ReelService.java:

package org.makeyourcase;

public class ReelService {

    private ReelQuery reelQuery;

    public void store(Reel reel) {
        reelQuery.store(reel);
    }
}

ReelQueryTest.java:

package org.makeyourcase;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import static org.mockito.Mockito.verify;

@RunWith(MockitoJUnitRunner.class)
public class ReelServiceTest {

    @Mock
    private ReelQuery mockReelQuery;
    @Mock
    private Reel mockReel;

    @InjectMocks
    private ReelService subject;

    @Test
    public void testThat_Store_DelegatesToQuery() throws Exception {
        subject.store(mockReel);
        verify(mockReelQuery).store(mockReel);
    }
}

【讨论】:

  • 如果没有足够的信息来回答问题,可接受的做法是使用 cmets 询问所需的信息,并等待 OP 响应。不回答不是回答。
  • 我确实离开了 cmets。下次在建议某人离开 cmets 之前阅读 cmets。 :) 答案是引导他朝着正确的方向前进——评论不足以说明一切,但可以准确说明他应该提供什么。如果他要提供足够的附加信息,我可以轻松地将答案编辑为零,以了解他需要什么。我的目标是帮助这个人。如果您不想提供帮助,最好的办法就是忽略问题并继续前进。
  • @Don 上面的 cmets 可能已经从审核队列中放入了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多