### Question:
MsoHeatUtils extends MsoCommonUtils implements VduPlugin { protected Stack handleUnknownCreateStackFailure(Stack stack, int timeoutMinutes, String cloudSiteId, String tenantId) throws MsoException { if (stack != null && !Strings.isNullOrEmpty(stack.getStackName()) && !Strings.isNullOrEmpty(stack.getId())) { return deleteStack(stack, timeoutMinutes, cloudSiteId, tenantId, false); } else { throw new StackCreationException("Cannot Find Stack Name or Id"); } }  StackInfo createStack(String cloudSiteId, String cloudOwner, String tenantId, String stackName,
            VduModelInfo vduModel, String heatTemplate, Map<String, ?> stackInputs, boolean pollForCompletion,
            int timeoutMinutes, String environment, Map<String, Object> nestedTemplates, Map<String, Object> heatFiles,
            boolean backout, boolean failIfExists); Stack postProcessStackCreate(Stack stack, boolean backout, int timeoutMinutes, boolean cleanUpKeyPair,
            String cloudSiteId, String tenantId, CreateStackParam stackCreate); Stack postProcessStackUpdate(Stack updateStack); Stack pollStackForStatus(int timeoutMinutes, Stack stack, String stackStatus, String cloudSiteId,
            String tenantId, boolean notFoundIsSuccess); void postProcessStackDelete(Stack stack); StackInfo queryStack(String cloudSiteId, String cloudOwner, String tenantId, String stackName); StackInfo deleteStack(String tenantId, String cloudOwner, String cloudSiteId, String stackName,
            boolean pollForCompletion, int timeoutMinutes); Map<String, Object> validateStackParams(Map<String, Object> inputParams, HeatTemplate heatTemplate); Heat getHeatClient(String cloudSiteId, String tenantId); Stack queryHeatStack(Heat heatClient, String stackName); Stack queryHeatStack(String stackName, String cloudSiteId, String tenantId); Map<String, Object> queryStackForOutputs(String cloudSiteId, String cloudOwner, String tenantId,
            String stackName); void copyStringOutputsToInputs(Map<String, Object> inputs, Map<String, Object> otherStackOutputs,
            boolean overWrite); void copyBaseOutputsToInputs(Map<String, Object> inputs, Map<String, Object> otherStackOutputs,
            List<String> paramNames, Map<String, String> aliases); List<String> convertCdlToArrayList(String cdl); Map<String, Object> convertInputMap(Map<String, Object> inputs, HeatTemplate template); @Override VduInstance instantiateVdu(CloudInfo cloudInfo, String instanceName, Map<String, Object> inputs,
            VduModelInfo vduModel, boolean rollbackOnFailure); @Override VduInstance queryVdu(CloudInfo cloudInfo, String instanceId); @Override VduInstance deleteVdu(CloudInfo cloudInfo, String instanceId, int timeoutMinutes); @Override VduInstance updateVdu(CloudInfo cloudInfo, String instanceId, Map<String, Object> inputs,
            VduModelInfo vduModel, boolean rollbackOnFailure); Resources queryStackResources(String cloudSiteId, String tenantId, String stackName, int nestedDepth); Events queryStackEvents(String cloudSiteId, String tenantId, String stackName, String stackId,
            int nestedDepth); Stacks queryStacks(String cloudSiteId, String tenantId, int limit, String marker); R executeHeatClientRequest(String url, String cloudSiteId, String tenantId, Class<R> returnType); void updateResourceStatus(String requestId, String resourceStatusMessage); static final String FOUND; static final String EXCEPTION_ROLLING_BACK_STACK; static final String IN_PROGRESS; }### Answer:
@Test public final void handleUnknownCreateStackFailure_Null_Stack_Test() throws MsoException, IOException { Stack stack = null; exceptionRule.expect(StackCreationException.class); exceptionRule.expectMessage("Cannot Find Stack Name or Id"); heatUtils.handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId); }