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