【发布时间】:2017-05-02 10:41:11
【问题描述】:
我的 CUT 有一个公共方法“sync()”,它返回 void,它使用一些变量,例如“syncContactEnabled”,它们是使用 spring 和属性文件设置的。 这是我的剪辑:
public class ContactSyncServiceImpl implements SyncService {
public void sync() {
long start = System.currentTimeMillis();
logger.info("-----sync() start:{}", start);
if (!syncContactEnabled) { //***********first: want to test this if
logger.info("Contact sync isn't enabled.");
return;
}
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Date now = new Date();
Date startDate = null;
String contactSyncStartDateConfig = configService.get(CONTACT_SYNC_START_DATE);
if (StringUtils.isBlank(contactSyncStartDateConfig)) { \\**********second: I want to test startDate value in this if-else
startDate = new Date(now.getTime() - syncStartDaysCount * 24 * 60 * 60 * 1000l);
} else {
try {
startDate = formatter.parse(contactSyncStartDateConfig);
} catch (Exception e) {
logger.warn("There's a problem parsing date:" + e);
}
}
/////////It is NOT complite code of class.......(:
}
第一个问题:
- 如何模拟一些变量,例如在属性文件中设置的“syncContactEnabled”?
第二个问题:
- 如何测试“sync()”方法的内部方式,例如如何测试 if-else 条件下的“startDate”值?
最后,这是我的属性文件:
sync.contact.enabled=false
sync.page.size=100
sync.cron=0 30 6,18 * * ?
#*/1 * * * * *
sync.start.days.count=365
【问题讨论】:
-
syncContactEnabled变量如何声明? -
为什么要测试
startDate?它是无用的(你永远不会使用它的值),应该从代码中删除。 -
@talex,这段代码不是复杂代码,我在课程的继续使用它。
标签: java unit-testing mocking mockito powermock