Pertemuan 10 - Unit Testing

Aditya Rizki Muhammad
5025221272

Sales Item Unit Testing

Penugasan kali ini kita kana mendemonstrasikan cara kerja unit testing. Class diagram nya seperti berikut.



Penerapan kode dari ketiga class tersebut adalah seperti berikut : 

Comment.java

public class Comment {
    private String author;
    private String text;
    private int rating;   // misalnya 1–5

    public Comment(String author, String text, int rating) {
        this.author = author;
        this.text = text;
        this.rating = rating;
    }

    public String getAuthor() {
        return author;
    }

    public String getText() {
        return text;
    }

    public int getRating() {
        return rating;
    }

    public String toString() {
        return author + " (" + rating + "/5): " + text;
    }
}

SalesItem.java

import java.util.ArrayList;

public class SalesItem {
    private String name;
    private int price;
    private ArrayList<Comment> comments;

    public SalesItem(String name, int price) {
        this.name = name;
        this.price = price;
        this.comments = new ArrayList<>();
    }

    public String getName() {
        return name;
    }

    public int getPrice() {
        return price;
    }

    public void addComment(String author, String text, int rating) {
        Comment c = new Comment(author, text, rating);
        comments.add(c);
    }

    public ArrayList<Comment> getComments() {
        return comments;
    }

    public void printInfo() {
        System.out.println("Item: " + name);
        System.out.println("Price: $" + price);
        System.out.println("Comments:");
        if (comments.isEmpty()) {
            System.out.println("  No comments yet.");
        } else {
            for (Comment c : comments) {
                System.out.println("  - " + c);
            }
        }
        System.out.println();
    }
}

SalesItemTest.java

import static org.junit.Assert.*;
import org.junit.Test;

public class SalesItemTest {

    @Test
    public void testSalesItemCreation() {
        SalesItem item = new SalesItem("Laptop Gaming", 1500);
        assertEquals("Laptop Gaming", item.getName());
        assertEquals(1500, item.getPrice());
    }

    @Test
    public void testAddComment() {
        SalesItem item = new SalesItem("Keyboard", 500);
        item.addComment("Aditya", "Bagus sekali!", 5);

        assertEquals(1, item.getComments().size());
        assertEquals("Aditya", item.getComments().get(0).getAuthor());
        assertEquals(5, item.getComments().get(0).getRating());
    }

    @Test
    public void testMultipleComments() {
        SalesItem item = new SalesItem("Mouse", 200);

        item.addComment("Adit", "Mantap", 4);
        item.addComment("Rizki", "Lumayan", 3);

        assertEquals(2, item.getComments().size());
    }
}

ketika pada class SalesItemTest dijalankan TestAll maka hasilnya adalah seperti berikut.