Teste de Software Junit

5 respostas
junitjava
A

Pessoal alguem poderia mim ajudar como faço para fazer os teste aqui no Junit desse progama, aqui é de lista encadeadas acabei de fazer de add no inicio, add no final…Falta fazer os teste e to sem saber…

esta ai a classe lista do gets e sets

`/**
 * Created by jean on 06/11/2016.
 */
public class lista {

    private int nota;
    private lista proximo;

    public void setNota( int nota){
        this.nota = nota;
    }
    public int getNota() {
        return this.nota;
    }
    public void setProximo( lista proximo) {
        this.proximo = proximo;
    }
    public lista getProximo() {
        return this.proximo;


    }

}

essa outra é inserir no inicio

`/**
 * Created by jean on 06/11/2016.
 */
/**
 * Created by jean on 06/11/2016.
 */
public class InserirInicio {
    int qtdElementos;
    lista primeiro;
    lista ultimo;

    public InserirInicio() {
        this.qtdElementos = 0;
        this.primeiro = null;
        this.ultimo = null;
    }
    public void InserirNoInicio(int nota){
        if(this.qtdElementos == 0) {
            //lista esta vazia
            lista novo = new lista();
            novo.setNota(nota);
            novo.setProximo(primeiro);
            this.primeiro = novo;

        }else{
            lista novo2 = new lista();
            novo2.setNota(nota);
            novo2.setProximo(primeiro);
            primeiro = novo2;

        }
        this.qtdElementos++;
    }
    public void imprimir(){
        if(this.qtdElementos == 0) {
            System.out.print("[]");
        }else{
            System.out.print("[");
            lista aux = this.primeiro;
            for(int i=0; i<this.qtdElementos -1; i++){
                System.out.print(aux.getNota()+ ",");
                aux = aux.getProximo();
            }
            System.out.print(aux.getNota() +"]");
        }
    }
    public static void main(String[] args){
        InserirInicio a = new InserirInicio();
        a.InserirNoInicio(1);
        a.InserirNoInicio(7);
        a.InserirNoInicio(8);
        a.imprimir();
        
    }
}

inserir no fim

`/**
 * Created by jean on 06/11/2016.
 */
public class InserirFim {
    int qtdElementos;
    lista primeiro;
    lista ultimo;

    public InserirFim() {
        this.qtdElementos = 0;
        this.primeiro = null;
        this.ultimo = null;
    }
    public void InserirNoFim(int nota){
        lista novo = new lista();
        novo.setNota(nota);

        if(this.qtdElementos == 0) {
            //lista esta vazia

            novo.setProximo(ultimo);
            this.primeiro=novo;
            this.ultimo = novo;

        }else{
            ultimo.setProximo(novo);
            ultimo = novo;
           // lista novo2 = new lista();
            //novo2.setNota(nota);
            //novo2.setProximo(ultimo);
            //ultimo = novo2;

        }
        this.qtdElementos++;
    }
    public void imprimir(){
        if(this.qtdElementos == 0) {
            System.out.print("[]");
        }else{
            System.out.print("[");
            lista aux = this.primeiro;
            for(int i=0; i<this.qtdElementos -1; i++){
                System.out.print(aux.getNota()+ ",");
                aux = aux.getProximo();
            }
            System.out.print(aux.getNota() +"]");
        }
    }
    public static void main(String[] args){
        InserirFim a = new InserirFim();

        
            a.InserirNoFim(1);
            a.InserirNoFim(9);
            a.InserirNoFim(5);
        a.imprimir();
        }
      
    }

eu geralmente to usando para teste o Junit noi intellG, uso tambem o netbeans
`

5 Respostas

P

Primeiro, Classes devem começar com Letra Maiuscula, e devem ter nome de verbos : verbos são os metodos.

Segundo, a sua classe lista esta mais para nó. uma Lista é um conjunto de nós.

Por exemplo, vc tem uma ListaQueInsereNoFim e uma ListaQueInsereNoComeco ( ou os famosos Fila e Pilha, se o nome fizer sentido ).

Agora vamos la. como testar? adicionar testes unitarios depos da classe estar pronta é um belo desafoi pois expoe as possiveis deficiencias do seu modelo. se é muito complexo de testar, então o codigo pode ser melhorado para continuar fazendo o que precisa.

Agora se o seu codigo apenas imprime strings na saida padrão, isso é bem complexo de testar. um teste unitario quer ver se para um dado estado, se vc executar um dado metodo, qual sera o retorno?

Faria mais sentido se as suas duas classes tivessem metodos adiciona e remove

como vc testa o metodo remove ? simples, vc adiciona 2 elementos ( 1 e 2) e ve em que ordem eles são removidos.

pense sobre isso, veja o enunciado do seu exercicio, de uma olhada em um tutorial de junit e bola pra frente

A

amigo eu to sem entender

meu metodo é esse

`  public void InserirNoInicio(int nota) {

if (this.qtdElementos == 0) {

//lista esta vazia

lista novo = new lista();

novo.setNota(nota);

novo.setProximo(primeiro);

this.primeiro = novo;
} else {
        lista novo2 = new lista();
        novo2.setNota(nota);
        novo2.setProximo(primeiro);
        primeiro = novo2;

    }
}

pelo que entendir meu teste irei comparar um valor com outro, como vou fazer esse teste pq ai vou add no inicio o que o teste ira mim retornar, mim de uma solucao, pq to perdidão…`

P

Exemplo generico

// teste trivial

Tipo t = new Tipo();
t.add(1);
int x = t.remove();
assertEquals(x, 1, "tem que remover 1");

// OUTRO  teste com dois adiciona ao final
Tipo t = new Tipo();
t.add(1);
t.add(2);
int x = t.remove();
int y = t.remove();
assertEquals(x, 1, "tem que remover 1");
assertEquals(y, 2, "tem que remover 2 agora");

Ficou mais claro?

Vc prepara o estado do objeto (cria, adiciona um ou dois).
Realiza as ações.
Verifica retorno.

A

valeu amigo vou tentar seguir esse exemplo seu

A

amigo fiz como vc falou,

`import org.junit.Assert;

import org.junit.Test;

import static <a href="http://org.hamcrest.core.Is.is">org.hamcrest.core.Is.is</a>;
public class listaTeste {

<a class="mention" href="/u/test">@Test</a>

public void testInserir() {
// OUTRO  teste com dois adiciona ao final
InserirInicio t = new InserirInicio();

t.InserirNoInicio(1);

t.InserirNoInicio(2);

int x = t.RemoveInicio();

int y = t.RemoveInicio();

assertEquals(x, 1, tem que remover 1);

assertEquals(y, 2, tem que remover 2 agora);
}

}

porem so dar erro no assertEquals, o que faco…
pq tenho outro exemplo aqui que fiz com o meu professor é o seguinte,

tenho minha classe som

`public class soma {

public static double calculoSoma( double valor1, double valor2){

    //double soma;

    return valor1 + valor2;
   // return soma;



}

}`

e a outra classe que fizemos foi a de teste

`import org.junit.Assert;

import org.junit.Test;

import static <a href="http://org.hamcrest.core.Is.is">org.hamcrest.core.Is.is</a>;

public class testesomarr {

@Test
public void testSomaDoisvalores(){

    double valor1, valor2 = 0;

    valor1= 10;
    valor2= 5;
    double valor = 15;

    double resultado = new soma().calculoSoma(valor1, valor2);
    Assert.assertThat(resultado, is(valor));
}

}`

enato com aquela sobre o exemplo que vc falou so dar erro, o que posso mudar ali…?

`

Criado 7 de novembro de 2016
Ultima resposta 9 de nov. de 2016
Respostas 5
Participantes 2