Junit 参数捕获器为空

Junit 参数捕获器为空,junit,mockito,Junit,Mockito,我正在尝试为下面的代码编写一个单元测试,其中我实例化了一个bean,并将其传递给类的其他私有方法进行进一步处理,然后再执行main方法所做的操作: public OverviewTabViewBean build(Listing listing) { VehicleDetailListingBean vehicleDetailListingBean = new VehicleDetailListingBean(); applyVehicleDetailListingRules(l

我正在尝试为下面的代码编写一个单元测试,其中我实例化了一个bean,并将其传递给类的其他私有方法进行进一步处理,然后再执行main方法所做的操作:

public OverviewTabViewBean build(Listing listing) {

   VehicleDetailListingBean vehicleDetailListingBean = new VehicleDetailListingBean();

   applyVehicleDetailListingRules(listing, vehicleDetailListingBean);
   OverviewTabViewBean overviewTabViewBean = new OverviewTabViewBean();

   if (vehicleDetailListingBean != null) {
        overviewTabViewBean.setMake(vehicleDetailListingBean.getMake());
        overviewTabViewBean.setModel(vehicleDetailListingBean.getModel());
      overviewTabViewBean.setAtCarId(vehicleDetailListingBean.getAtCarId());
   ..
   }

return overviewTabViewBean;

测试结果如下所示:

@Captor
ArgumentCaptor<OverviewTabViewBean> overviewTabViewBean;
@Captor
ArgumentCaptor<VehicleDetailListingBean> vehicleDetailListingBean;
@Mock
private RulesEngineService rulesEngineService;
@Mock
private VehicleDetailRules vehicleDetailRules;
@Mock
private VehicleReferenceService vehicleReferenceService;

@BeforeMethod
public void setUp() {
    MockitoAnnotations.initMocks(this);
}

/**
 * build
 */
@Test
public void build() {
    Listing listing = new Listing();
    listing.setListingId(111L);
    listing.setListingType(ListingType.NEW);

    List<Rule<Listing, ListingBean>> rules1 = new ArrayList<Rule<Listing, ListingBean>>();
    List<Rule<Listing, ListingBean>> rules2 = new ArrayList<Rule<Listing, ListingBean>>();
    doReturn(rules1).when(vehicleDetailRules).getCommonListingRules();
    doReturn(rules2).when(vehicleDetailRules).getDetailListingRules();

    overviewTabViewBeanBuilder.build(listing);
    verify(rulesEngineService, times(2)).applyRules(anyObject(), vehicleDetailListingBean.capture(), anyList());
    .....
    }
@Captor
ArgumentCaptor概览选项卡Bean;
@俘虏
议论文捕获者车辆详细信息;
@嘲弄
专用规则引擎服务规则引擎服务;
@嘲弄
私家车细则车辆细则;
@嘲弄
私家车参考服务车辆参考服务;
@预处理法
公共作废设置(){
initMocks(this);
}
/**
*建造
*/
@试验
公共void build(){
Listing=新列表();
listing.setListingId(111L);
listing.setListingType(ListingType.NEW);
列表规则1=新的ArrayList();
列表规则2=新的ArrayList();
doReturn(规则1).when(车辆详细规则).getCommonListingRules();
doReturn(规则2).when(车辆详细规则).getDetailListingRules();
概述选项卡ViewBeanBuilder.build(列表);
验证(rulesEngineService,times(2)).applyRules(anyObject(),VehicleDetailingBean.capture(),anyList());
.....
}

vehicledetailistingbean返回为null,但未进入if块。我在这里做错了什么?

我看不出
build
方法中的
vehicleDetailListingBean
如何可以
null
。您创建一个新的,然后调用一个方法(但这不会更改引用),然后检查它是否为null,您是说如果您在调试器中单步执行它,那么
new vehicledetailistingbean()
就是
null
??
@Captor
ArgumentCaptor<OverviewTabViewBean> overviewTabViewBean;
@Captor
ArgumentCaptor<VehicleDetailListingBean> vehicleDetailListingBean;
@Mock
private RulesEngineService rulesEngineService;
@Mock
private VehicleDetailRules vehicleDetailRules;
@Mock
private VehicleReferenceService vehicleReferenceService;

@BeforeMethod
public void setUp() {
    MockitoAnnotations.initMocks(this);
}

/**
 * build
 */
@Test
public void build() {
    Listing listing = new Listing();
    listing.setListingId(111L);
    listing.setListingType(ListingType.NEW);

    List<Rule<Listing, ListingBean>> rules1 = new ArrayList<Rule<Listing, ListingBean>>();
    List<Rule<Listing, ListingBean>> rules2 = new ArrayList<Rule<Listing, ListingBean>>();
    doReturn(rules1).when(vehicleDetailRules).getCommonListingRules();
    doReturn(rules2).when(vehicleDetailRules).getDetailListingRules();

    overviewTabViewBeanBuilder.build(listing);
    verify(rulesEngineService, times(2)).applyRules(anyObject(), vehicleDetailListingBean.capture(), anyList());
    .....
    }