public void execute() {
    Profiler stepProfiler = Profiler.create(LOGGER).logTimeLast(true);
    boolean allStepsExecuted = false;
    try {
      executeSteps(stepProfiler);
      allStepsExecuted = true;
    } finally {
      if (listener != null) {
        executeListener(allStepsExecuted);
      }
    }
  }
@Test
  public void execute_call_execute_on_each_ComputationStep_in_order_returned_by_instances_method() {
    new ComputationStepExecutor(mockComputationSteps(computationStep1, computationStep2, computationStep3), taskInterrupter)
      .execute();

    InOrder inOrder = inOrder(computationStep1, computationStep2, computationStep3);
    inOrder.verify(computationStep1).execute(any());
    inOrder.verify(computationStep1).getDescription();
    inOrder.verify(computationStep2).execute(any());
    inOrder.verify(computationStep2).getDescription();
    inOrder.verify(computationStep3).execute(any());
    inOrder.verify(computationStep3).getDescription();
    inOrder.verifyNoMoreInteractions();
  }