9
respostas

Nada dos exemplos funciona

Primeiro o instrutor começou com um projeto que não disse que era pra criar. O "new ContaTest" ao que parece não é uma classe comum do java, pois tudo o que pede para importar ele não importa. Quando eu digitei a linha "assertThat(conta.getSaldo(), is(equalTo(150d)));" nenhuma das importações mostradas no video vieram. Também não foi explicado o que significa "@Test". Fiquei horas tentando adivinhar o que era pra configurar ou importar, mas não consegui. O instrutor precisa explicar melhor o que ele vai fazendo nos exemplos, senão a gente fica perdido.

9 respostas

Cara, pode ser um wild guess meu aqui... mas se esta com dificuldade nisso, talvez deveria reforçar o seu conhecimento em lógica de programação, fazer ou refazer os módulos de Java 1 ao 8 pelo menos.

Grande abraço!

Eu fiz e refiz os exemplos dele, vi um post onde diz que deveria ter sido um classe JUnit, coisa que no video ele inicializou como como classe comum, peguei os Jar da lib do codigo do exemplo já disponivel no inicio do curso, tentei importar, deixei igual ao que tinha na tela do video e ainda assim não conseguir fazer os imports que o professor mostra no video, mesmo assim não funcionou e não conseguir resolver. Vc só dizer que eu teria que refazer os módulos que eu já fiz não resolve o meu problema. Preciso saber com mais precisão o que tá dando errado, pois essa informação não está disponível na aula.

Então, não leve para o pessoal amigo.

Estou falando por experiencia, as vezes falta atenção ou conhecimento para seguir alguns cursos.

Eu dei uma lida na atividade e no curso e assim é bem básico, então, novamente, não leve para o pessoal, mas vc já deveria saber lidar com importações e anotações antes de cair nesse curso.

Talvez seja isso, tenta lá depois, volta no básico, assiste de novo!

Grande abraço!

Esse curso é sequencia natural, não "cai" aqui a toa.

Tive que procurar no google por fora aqui do forum e do curso pra solucionar o problema. Realmente tinha alguma coisa a ver com um assunto que vi nos oito módulos que estudei antes de chegar aqui que se relaciona ao BuildPath. Porém é insano alguem me sugerir que eu reveja ou refaça todos os módulos anteriores só pra achar o problema que preciso solucionar agora. E mesmo eu tendo conseguido puxar as bibliotecas que precisava, o Eclipse não fez os imports automaticamente como esperado; eu tive que digitar as linhas de imports na mão. A ajuda neste tópico deixou a desejar!

é porque assim, se tu não aprendeu a fazer import automático quando o eclipse não faz, literalmente 3 clicks ou 3 botões. Talvez seja hora de fazer as aulas iniciais.

Mas só sugestão, abraço.

Olá Dilmar, tudo bem com você?

Quando criamos uma classe de teste, é padrão nós nomearmos ela com o "nomeDaClasseQueVamosTestar" + "Test". Eu acredito que os seus imports falharam pois o seu projeto não tem acesso ao JUnit e o Hamcrest. Dois frameworks que auxiliam no desenvolvimento e execução de testes unitários em código Java. Vou assumir que o seu projeto está puro, sem nenhuma biblioteca externa.

As seguintes instruções estão disponíveis no curso de Java e Testes: Test Driven Development com Junit. A configuração do JUnit você encontra na primeira aula no minuto 11:00 do vídeo. Já o Hamcrest, você encontra na aula 5 no minuto 3:50.

Primeiro, vamos ao JUnit. Em versões recentes do Eclipse, ele já vem configurado e tudo o que precisamos fazer é adicioná-lo no projeto. Então, Botão direito do mouse no projeto > Build Path > Add Libraries... > Selecione o JUnit > Selecione a opção JUnit 4 (versão usada na aula) > Pronto. Agora veja se a biblioteca apareceu dentro do seu projeto.

Diferente do JUnit, o Hamcrest precisa ser baixado e importado para o seu projeto. Para fazer isso, clique aqui para acessar a página com os downloads, depois basta escolher a versão da biblioteca. Se estiver usando o Windows, pode baixar a versão zip direto. Depois que você baixar o arquivo e descompactá-lo, procure pelo arquivo jar. Caso tenha baixado o zip, ele vai estar dentro da primeira pasta com o nome hamcrest-all-1.3.jar. Com o arquivo jar em mãos, copie ele para dentro do seu projeto. Claro, assim como o JUnit, também precisamos adicioná-lo no Build Path do projeto, então Botão direito no arquivo jar que acabamos de colar no projeto > Build Path > Add to Build Path > Botão direito no projeto > Build Path > Configure Build Path > Order and Export > Clique no hamcrest > Clique no botão Up para que ele fique acima do JUnit 4 > Pronto. Agora podemos usar a biblioteca depois de fazermos os imports.

Certifique-se também que os imports que você fizer estão corretos. Importamos o JUnit através do import static org.junit. e o Hamcrest através do import static org.hamcrest.*.

Sobre o @Test, ele simplesmente indica ao JUnit que aquele método deverá ser identificado como teste ao executarmos a classe de teste.

Acho que é isso, se encontrar algum problema durante a configuração das bibliotecas ou tiver algum ponto que ainda não ficou claro é só avisar!

Abraços e bons estudos!!

Sim, agora até funcionou, mas algo parecido eu já tinha conseguido fazer. Porém o impor automatico e da maneira que o instrutor demonstrou na aula, eu não consegui reproduzir. Interessante notar que o import Assert.assertThat, bem como o métod, aparecem riscados, como tive que colocar junto aqui no texto, pois no bloco de código a formatação de riscado não funciona. Pelo que sei, riscado no java é código antigo descontinuado.

package teste;

import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat;

import org.junit.Test;

public class ContaTeste { @Test public void testeSubtracao() { Conta conta = new Conta(200d); conta.sacar(50d); assertThat(conta.getSaldo(), is(equalTo(150d))); } }

Opa Dilmar! Entendi, realmente fui dar uma conferida aqui e a versão utilizada em aula foi descontinuada de um tempo pra cá. Inclusive, fui dar uma olhadinha na descrição do método org.junit.Assert.assertThat e vi que até lá é recomendado usar um outro método pertencente ao Hamcrest! Então, eu recomendo você seguir a sugestão do próprio método deprecated e usar o import de uma versão mais nova e segura. Que nesse caso é o import static org.hamcrest.MatcherAssert.assertThat e também o import static org.hamcrest.Matchers.*, que contém métodos que serão usados em conjunto com o assertThat do Hamcrest.

Imgur

Sobre o import automático, embora seja uma ferramenta fundamental para que tenhamos produtividade codando. Infelizmente, já fui enganado muitas vezes por conta de imports automáticos que trouxeram classes de pacotes errados. Em 99% dos casos ele vai te ajudar, mas precisamos estar sempre atentos àquele 1% que acaba quebrando o código como aconteceu agora.

Pegando o exemplo que estamos discutindo, o código ficaria um pouco diferente com esse novo assertThat, sem o is antes do equalTo(), por exemplo:

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

import org.junit.Test;

public class ContaTest {

    @Test
    public void aoSacarUmValorDeUmaContaOSaldoDeveSofrerUmaSubtracaoDesseValor() {
    Conta conta = new Conta(200d);
    conta.sacar(50d);

    assertThat(conta.getSaldo(), equalTo(150d));

Veja se funciona para você, eu não cheguei a testar o código. Mas de acordo com a sintaxe utilizada em outros projetos onde usei o JUnit4 com Hamcrest, a sintaxe deve estar funcionando dessa forma agora.

Testa aí e depois me avisa se funcionou. Se tiver algum ponto que ainda não ficou claro é só avisar!

Abraços!!