私はJUnit
を使ってテストケースを作成しており、可能な限り、Mockito
APIも使用しています。 Collection<AppConfigTO> filteredCollection = CollectionUtils.select(configs, beanPredicate);
は、私がテストに固執しているコードです。私はCollectionUtils
をモックできません。なぜなら、スタブしている間にselect()
を得ることができないからです。 Mockito
を使用しない場合は、私の必要に応じてfilteredCollection
の値をどのように変更する必要がありますか。私はサイズ>0
だから私のCobertura
レポートの2番目のif文をカバーすることができます。テスト中のJUnitとMockitoでローカル変数をテストする
方法:
public List<AppConfigTO> getAppConfig(String configCode) {
List<AppConfigTO> list = null;
List<AppConfigTO> configs = getAppConfig();
if(configs != null) {
EqualPredicate nameEqlPredicate = new EqualPredicate(configCode);
BeanPredicate beanPredicate = new BeanPredicate("configCode", nameEqlPredicate);
Collection<AppConfigTO> filteredCollection = CollectionUtils.select(configs, beanPredicate);
if(filteredCollection != null && filteredCollection.size()>0) {
list = new ArrayList<AppConfigTO>();
for(AppConfigTO to : filteredCollection) {
list.add(to);
}
}
}else{
list = appConfigDao.getAppConfig(configCode);
}
return list;
}
JUnitテストケース:
@Test
public void testGetAppConfig() throws Exception {
AppConfigManager appManager = new AppConfigManager();
cacheProvider = new TestAppConfigManager();
IAppConfigManager configManager = Mockito.mock(IAppConfigManager.class);
IAppConfigDao configDao = Mockito.mock(IAppConfigDao.class);
List<AppConfigTO> list = new ArrayList<>();
Mockito.when(configManager.getAppConfig()).thenReturn(list);
Mockito.when(configDao.getAppConfig()).thenReturn(list);
appManager.setAppConfigDao(configDao);
list = appManager.getAppConfig(CONFIG_CODE);
assertNull(list);
assertNotNull(appManager.getAppConfigDao());
assertSame("04852",this.CONFIG_CODE);
assertNotNull(configManager.getAppConfig());
// No ConfigManager
appManager = new AppConfigManager();
cacheProvider = new TestAppConfigManager();
configManager = Mockito.mock(IAppConfigManager.class);
configDao = Mockito.mock(IAppConfigDao.class);
list = new ArrayList<>();
Mockito.when(configManager.getAppConfig()).thenReturn(null);
Mockito.when(configDao.getAppConfig()).thenReturn(null);
appManager.setAppConfigDao(configDao);
list = appManager.getAppConfig(CONFIG_CODE);
assertTrue(list.isEmpty());
assertNotNull(appManager.getAppConfigDao());
assertSame("04852",this.CONFIG_CODE);
assertNull(configManager.getAppConfig());
}
私がテストを続行することができるようにそれを行うにはどのような方法があります。可能な限り事前
あなたは正しいです。ヤノスと私はこれがドンの清潔な方法だと思います。私はPowerMockitoを使うことを考えていましたが、それ以上はありません。ありがとうございました。 –
あなたはそれが気に入ってうれしいです。それは本当に良い考え方です。 – janos