@Test(expected = NullPointerException.class)
  public void testValidateInstanceMethodsShouldThrowNullPointerExceptionIfErrorsIsNull() {
    // Given:

    // When:
    underTest.validateInstanceMethods(null);

    // Then: expect exception
  }
  @Test
  public void
      testValidateInstanceMethodsShouldNotThrowExceptionIfNoErrorsExistAndTestMethodsAreAvailable() {
    // Given:
    List<Throwable> errors = new ArrayList<Throwable>();

    doReturn(asList(testMethod)).when(underTest).computeTestMethods();

    // When:
    underTest.validateInstanceMethods(errors);

    // Then:
    assertThat(errors).isEmpty();
  }
  @Test
  public void
      testValidateInstanceMethodsShouldAddExceptionIfComputeTestMethodsReturnsNoTestMethods() {
    // Given:
    List<Throwable> errors = new ArrayList<Throwable>();

    doReturn(asList()).when(underTest).computeTestMethods();

    // When:
    underTest.validateInstanceMethods(errors);

    // Then:
    assertThat(errors).hasSize(1);
    assertThat(errors.get(0)).hasMessage("No runnable methods");
  }
  @Test
  public void
      testValidateInstanceMethodsShouldNotThrowExceptionIfComputeTestMethodsWouldThrowExceptionButErrorsAlreadyExistsBefore() {
    // Given:
    List<Throwable> errors = new ArrayList<Throwable>();

    doAnswer(
            new Answer<Void>() {
              @SuppressWarnings("unchecked")
              public Void answer(InvocationOnMock invocation) throws Throwable {
                ((List<Throwable>) invocation.getArguments()[0]).add(new Error());
                return null;
              }
            })
        .when(underTest)
        .validateTestMethods(errors);

    doThrow(IllegalArgumentException.class).when(underTest).computeTestMethods();

    // When:
    underTest.validateInstanceMethods(errors);

    // Then: no exception
  }