@Test public void testCheckFlowTemplate() throws Exception { method = class1.getDeclaredMethod("checkFlowTemplate", new Class[] {AbstractFlow.class, Map.class}); method.setAccessible(true); field = class1.getDeclaredField("getDefinitions"); field.setAccessible(true); GetDefinitions getDefinitions = mock(GetDefinitions.class); AbstractFlow flow = mock(AbstractFlow.class); MatchItem matchItem = mock(MatchItem.class); List<MatchItem> matchItemList = new ArrayList<MatchItem>(); MatchItemValue matchItemValue = mock(MatchItemValue.class); MatchItemName matchItemName = mock(MatchItemName.class); MatchItemDefinition matchItemDefinition = mock(MatchItemDefinition.class); MatchItemDefinition.MatchItemValueType type = MatchItemDefinition.MatchItemValueType.String; TemplateParameter.ParameterValueType valueType = TemplateParameter.ParameterValueType.Int; Map<MatchItemName, MatchItemDefinition> matchItemDefinitionMap = new HashMap<MatchItemName, MatchItemDefinition>(); Map<ParameterName, TemplateParameter.ParameterValueType> parameterValueTypeMap = new HashMap<ParameterName, TemplateParameter.ParameterValueType>(); field.set(updateTemplateDefinition, getDefinitions); parameterValueTypeMap.put(new ParameterName("ParameterName"), valueType); when(getDefinitions.getMatchItemDefinition()).thenReturn(matchItemDefinitionMap); when(flow.getMatchItem()).thenReturn(matchItemList); Assert.assertTrue(method.invoke(updateTemplateDefinition, flow, parameterValueTypeMap) == null); matchItemList.add(matchItem); when(matchItem.getMatchItemName()).thenReturn(matchItemName); when(matchItemName.getValue()).thenReturn("test"); Assert.assertTrue( method .invoke(updateTemplateDefinition, flow, parameterValueTypeMap) .equals( "The match item " + matchItem.getMatchItemName().getValue() + " is not defined.")); // test add matchItem matchItemDefinitionMap.put(matchItemName, matchItemDefinition); Assert.assertTrue(matchItemDefinitionMap.containsKey(matchItemName)); when(matchItemDefinition.getMatchItemValueType()) .thenReturn(MatchItemDefinition.MatchItemValueType.Int) .thenReturn(type); Assert.assertTrue(method.invoke(updateTemplateDefinition, flow, parameterValueTypeMap) == null); when(matchItem.getMatchItemValue()).thenReturn(matchItemValue); when(matchItemValue.getStringValue()).thenReturn("ParameterName"); Assert.assertTrue( method .invoke(updateTemplateDefinition, flow, parameterValueTypeMap) .equals("The match item " + "ParameterName" + " type is not right.")); }