我的剪切具有公共方法," sync(("它返回void,并使用一些变量,例如" SyncContactaceNabled"。它们使用弹簧和属性文件设置。这是我的削减:
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.......(:
}
第一个问题:
- 我如何模拟某些变量,例如" SyncconContactenabled"在属性文件中设置了哪个?
第二个问题:
- 我如何测试"同步((的内部方式"。方法,例如我如何测试" StartDate"在if-else条件下的价值?
最后,这是我的属性文件:
sync.contact.enabled=false
sync.page.size=100
sync.cron=0 30 6,18 * * ?
#*/1 * * * * *
sync.start.days.count=365
第一个问题:
- 如何模拟某些变量,例如" SyncContactaceNabled"它在属性文件中设置的变量?
你不。
第二个问题:
- 如何测试" sync(("方法的内部方式,例如,如何在IF-ELSE条件下测试" StartDate"值?
你也不是。
UNTISTESTED时,您会验证公共可观察的行为,这意味着:结果是根据输入返回的,单位如何与的依赖关系。
变量" SyncContactActabled"是您未验证的实现细节。这是因为在不更改单位行为的情况下可能会发生变化,并且您不想在这种情况下更改测试。
我想,我只能使用一些测试,例如:powermockito.donothing或powermockito.verify .....是????我无法测试内部方式... - M.MJN202
避免 powermock(-ito(有机会。在大多数情况下
通常,您模拟依赖项,您的单元与其他类交流的其他类。唯一的例外是您的单元是抽象类。
需要doNothing(mock).someMethod()
配置,如果您模拟了真实类(而不是接口(,并且需要禁止调用该方法(someMethod()
((例如,因为它连接到数据库...(