otaldoLOCK / ProjetoMVC_Projeto

Projeto Teste no padrão MVC - Com MER, diagrama de classes e diagrama de caso de uso
0 stars 0 forks source link

Teste VendaItens.java #6

Open Popolinos opened 3 months ago

Popolinos commented 3 months ago

A classe VendaItens.java possui funções que definem o Id a quantidade, o valor e o nome dos produtos. Essas funções foram testadas individualmente para verificar se suportariam os testes feitos nela.

Popolinos commented 3 months ago

Teste certo: Testamos a classe da maneira que ela foi pensada para ser usada, ou seja, respeitamos o tipo da entrada de dados.

Para fazermos os testes utilizamos o JUnit por meio do Intellij:

package Model;

import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*;

class VendaItemTestCerto {

@Test
void testToString() {
    Produto produto = new Produto(1, "Produto A", 10.0f);
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    vendaItem.setProduto(produto);
    String expected = "      Código Item: 1\n" +
            "                  Produto: Produto A\n" +
            "                  Valor Unitário: 10,00\n" +
            "                  Quantidade: 5\n" +
            "                  Total: 50,00";
    assertEquals(expected, vendaItem.toString());
}

@Test
void setProduto() {
    Produto produto = new Produto(1, "Produto A", 10.0f);
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    vendaItem.setProduto(produto);
    assertEquals(produto, vendaItem.getProduto());
}

@Test
void getProduto() {
    Produto produto = new Produto(1, "Produto A", 10.0f);
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    vendaItem.setProduto(produto);
    assertEquals(produto, vendaItem.getProduto());
}

@Test
void setIdVendaItem() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    vendaItem.setIdVendaItem(2);
    assertEquals(2, vendaItem.getIdVendaItem());
}

@Test
void getIdVendaItem() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    assertEquals(1, vendaItem.getIdVendaItem());
}

@Test
void setQuantidade() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    vendaItem.setQuantidade(10);
    assertEquals(10, vendaItem.getQuantidade());
}

@Test
void getQuantidade() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    assertEquals(5, vendaItem.getQuantidade());
}

@Test
void setValorUnitario() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    vendaItem.setValorUnitario(20.0f);
    assertEquals(20.0f, vendaItem.getValorUnitario());
}

@Test
void getValorUnitario() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    assertEquals(10.0f, vendaItem.getValorUnitario());
}

}

Popolinos commented 3 months ago

Teste errado: Esses testes forçam a classe VendaItem a lidar com situações onde o produto é nulo, a quantidade é negativa ou o valor unitário é negativo.

Para fazermos os testes utilizamos o JUnit por meio do Intellij:

package Model;

import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*;

class VendaItemTestErrado {

@Test
void testToStringSemProduto() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    assertThrows(NullPointerException.class, vendaItem::toString);
}

@Test
void setQuantidadeComQuantidadeNegativa() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    assertThrows(IllegalArgumentException.class, () -> {
        vendaItem.setQuantidade(-10);
    });
}

@Test
void setValorUnitarioComValorUnitarioNegativo() {
    VendaItem vendaItem = new VendaItem(1, 5, 10.0f);
    assertThrows(IllegalArgumentException.class, () -> {
        vendaItem.setValorUnitario(-20.0f);
    });
}

}