如何在返回void类型的公共方法中测试本地变量



我的剪切具有公共方法," 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()((例如,因为它连接到数据库...(

(

相关内容

  • 没有找到相关文章

最新更新