### Question:
Time { public static Time of(String nome) { return new Time(requireNonNull(nome, "nome eh obrigatorio")); } private  Time(String nome); List<Jogador> getJogadores(); void adicionar(Jogador jogador); static Time of(String nome); int total(); List<Jogador> getFantastico(); Map<Posicao, List<Jogador>> getJogadorByPosicao(); Jogador getArtilheiro(); List<Jogador> getJogadoresOrderByGols(); boolean removeJogador(String nome); @Override String toString();  }### Answer:
@Test @DisplayName("Deve falhar ao retornar o artilheiro do time") void deveFalharRetornarOArtilheiro() { Time bahia = Time.of("Bahia"); Exception exception = assertThrows(IllegalStateException.class, bahia::getArtilheiro); assertAll( () -> assertThat(exception, is(notNullValue())), () -> assertThat(exception.getMessage(), is("Sempre deve ter um artilheiro no time")) ); }
@Test @DisplayName("Deve criar uma nova instancia de time") void deveCriarTime() { assertAll( () -> assertNotNull(bahia), () -> assertNotSame(bahia, Time.of("Bahia")) ); }
@Test @DisplayName("Deve falhar ao tentar criar uma instancia de time sem informar o nome") void deveFalharCriarTime() { NullPointerException exception = assertThrows(NullPointerException.class, () -> Time.of(null)); assertEquals(exception.getMessage(), "nome eh obrigatorio"); }