Best Practices

1. Naming Convention

Nama test method harus jelas apa yang di-test:

// ❌ Buruk
@Test
public void test1() { }

@Test
public void checkIt() { }

// ✅ Baik
@Test
public void testAddWithPositiveNumbers() { }

@Test
public void testDivideByZeroThrowsException() { }

Format: test[Method/Feature][Scenario]

2. One Assertion Per Test (jika bisa)

// ❌ Kurang ideal - multiple assertions di satu test
@Test
public void testCalculator() {
    assertEquals(5, calc.add(2, 3));
    assertEquals(2, calc.subtract(5, 3));
    assertEquals(12, calc.multiply(3, 4));
}

// ✅ Lebih baik - satu assertion per test
@Test
public void testAddReturnsCorrectSum() {
    assertEquals(5, calc.add(2, 3));
}

@Test
public void testSubtractReturnsCorrectDifference() {
    assertEquals(2, calc.subtract(5, 3));
}

3. Arrange-Act-Assert Pattern

Struktur setiap test dengan jelas:

@Test
public void testCalculation() {
    // ARRANGE: Setup data
    int a = 2;
    int b = 3;
    Calculator calc = new Calculator();
    
    // ACT: Execute method yang di-test
    int result = calc.add(a, b);
    
    // ASSERT: Check hasil
    assertEquals(5, result);
}

4. Test Both Success dan Failure Cases

@Test
public void testAddWithPositiveNumbers() {  // Success case
    assertEquals(5, calc.add(2, 3));
}

@Test
public void testAddWithNegativeNumbers() {  // Edge case
    assertEquals(-1, calc.add(-2, 1));
}

@Test
public void testDivideByZero() {  // Failure case
    assertThrows(IllegalArgumentException.class, () -> calc.divide(10, 0));
}

Kesimpulan

Unit testing dengan JUnit adalah cara cerdas untuk memastikan code lo berfungsi dengan benar. Langkah-langkahnya simple:

  1. Setup project dengan Maven
  2. Buat test class di folder src/test/java/
  3. Tulis test methods dengan @Test
  4. Gunakan assertion (assertEquals, assertTrue, assertThrows)
  5. Run tests dan lihat hasilnya

Setelah terbiasa dengan JUnit, lo siap untuk belajar @Mock (Mockito) untuk testing yang lebih advanced!

Happy testing!


Butuh bantuan untuk Unit Testing komponen java projectmu? Langsung aja kontak tim kita disini….


Contoh Praktik Lengkap

Contoh 1: Test Simple Calculation

File: src/main/java/com/example/Calculator.java

package com.example;

public class Calculator {
    
    public int add(int a, int b) {
        return a + b;
    }
    
    public int subtract(int a, int b) {
        return a - b;
    }
    
    public int multiply(int a, int b) {
        return a * b;
    }
    
    public int divide(int a, int b) {
        if (b == 0) throw new IllegalArgumentException("Cannot divide by zero");
        return a / b;
    }
    
    public boolean isEven(int n) {
        return n % 2 == 0;
    }
}

File: src/test/java/com/example/TestCalculator.java

package com.example;

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

public class TestCalculator {
    
    private Calculator calc;
    
    @BeforeEach
    public void setup() {
        calc = new Calculator();
    }
    
    @Test
    public void testAdd() {
        assertEquals(5, calc.add(2, 3));
        System.out.println("✅ testAdd passed");
    }
    
    @Test
    public void testSubtract() {
        assertEquals(2, calc.subtract(5, 3));
        System.out.println("✅ testSubtract passed");
    }
    
    @Test
    public void testMultiply() {
        assertEquals(12, calc.multiply(3, 4));
        System.out.println("✅ testMultiply passed");
    }
    
    @Test
    public void testDivide() {
        assertEquals(2, calc.divide(6, 3));
        System.out.println("✅ testDivide passed");
    }
    
    @Test
    public void testDivideByZero() {
        assertThrows(IllegalArgumentException.class, () -> {
            calc.divide(10, 0);
        });
        System.out.println("✅ testDivideByZero passed");
    }
    
    @Test
    public void testIsEven() {
        assertTrue(calc.isEven(4));
        assertFalse(calc.isEven(5));
        System.out.println("✅ testIsEven passed");
    }
}

Cara Jalankan

Option 1: Klik Right-Click di file → “Run Tests”

VSCode akan menjalankan semua test methods dan show hasil.

Option 2: Gunakan Terminal

mvn test -Dtest=TestCalculator

Expected Output

✅ testAdd passed
✅ testSubtract passed
✅ testMultiply passed
✅ testDivide passed
✅ testDivideByZero passed
✅ testIsEven passed

Tests run: 6, Failures: 0, Skipped: 0, Time elapsed: 0.xxx s

Contoh 2: Test dengan Setup dan Cleanup

File: src/test/java/com/example/TestWithSetup.java

package com.example;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
import static org.junit.jupiter.api.Assertions.*;
import java.util.*;

public class TestWithSetup {
    
    private List<String> list;
    
    @BeforeEach
    public void setup() {
        list = new ArrayList<>();
        System.out.println("Setup: List created");
    }
    
    @Test
    public void testAddItem() {
        list.add("Apple");
        assertEquals(1, list.size());
        System.out.println("  ✅ testAddItem passed");
    }
    
    @Test
    public void testRemoveItem() {
        list.add("Apple");
        list.add("Banana");
        list.remove("Apple");
        assertEquals(1, list.size());
        System.out.println("  ✅ testRemoveItem passed");
    }
    
    @Test
    public void testListEmpty() {
        assertTrue(list.isEmpty());
        System.out.println("  ✅ testListEmpty passed");
    }
    
    @AfterEach
    public void cleanup() {
        list = null;
        System.out.println("Cleanup: List cleared\n");
    }
}

Output:

Setup: List created
  ✅ testAddItem passed
Cleanup: List cleared

Setup: List created
  ✅ testRemoveItem passed
Cleanup: List cleared

Setup: List created
  ✅ testListEmpty passed
Cleanup: List cleared

Tests run: 3, Failures: 0

Perhatikan: Setup dan cleanup dipanggil 3 kali untuk 3 test methods.

Setup dan Cleanup: @BeforeEach dan @AfterEach

Kadang sebelum test jalan, kita perlu setup data. Setelah test selesai, kita perlu cleanup.

@BeforeEach — Jalankan sebelum setiap @Test

private List<String> list;

@BeforeEach
public void setup() {
    list = new ArrayList<>();  // Setup sebelum setiap test
    System.out.println("Setup: List created");
}

@Test
public void testAdd() {
    list.add("item");
    assertEquals(1, list.size());
}

@AfterEach — Jalankan setelah setiap @Test

@AfterEach
public void cleanup() {
    list = null;  // Cleanup setelah setiap test
    System.out.println("Cleanup: List cleared");
}

Urutan Eksekusi

Jika ada 2 test methods:

Test 1:
  @BeforeEach setup()
  @Test testAdd()
  @AfterEach cleanup()

Test 2:
  @BeforeEach setup()
  @Test testRemove()
  @AfterEach cleanup()

Output:

Setup: List created
Cleanup: List cleared

Setup: List created
Cleanup: List cleared

Kenapa Perlu @BeforeEach dan @AfterEach?

Supaya setiap test punya fresh state (state bersih). Contoh:

@Test
public void testAdd() {
    list.add("Apple");  // list sekarang punya 1 item
}

@Test
public void testRemove() {
    // Jika gak ada @BeforeEach, list masih punya "Apple" dari test 1!
    // Ini akan corrupt test 2
}

Dengan @BeforeEach, setiap test mulai dengan list kosong.

Assertion: Cara Check Hasil

Assertion adalah pernyataan “nilai ini harus sama dengan itu”. Jika assertion gagal, test gagal.

3 Assertion Paling Sering

1. assertEquals() — Check nilai sama

@Test
public void testAddition() {
    int hasil = 2 + 2;
    assertEquals(4, hasil);  // "hasil harus sama dengan 4"
}

Jika hasil tidak sama dengan 4, test FAIL.

2. assertTrue() — Check boolean true

@Test
public void testIsPositive() {
    int number = 10;
    assertTrue(number > 0);  // "10 > 0 harus true"
}

3. assertThrows() — Expect exception

Kadang kita ingin method melempar exception (error). Kita check apakah exception itu dilempar:

@Test
public void testDivideByZero() {
    assertThrows(ArithmeticException.class, () -> {
        int hasil = 10 / 0;  // Ini akan throw ArithmeticException
    });
}

“Ini code harus throw ArithmeticException. Jika gak throw, test FAIL.”

Konsep @Test

Apa itu @Test?

@Test adalah anotasi (label) yang memberitahu JUnit: “Method ini adalah test, jalankan otomatis!”

Tanpa @Test:

public void myTest() {
    // Ini method biasa, nobody knows it's a test
}

Dengan @Test:

@Test
public void myTest() {
    // JUnit detect ini adalah test, jalankan otomatis
}

Bagaimana JUnit Bekerja?

  1. Lo klik “Run Tests” di VSCode
  2. JUnit scan semua class di folder test/
  3. JUnit cari method yang punya anotasi @Test
  4. JUnit jalankan setiap method @Test
  5. JUnit report hasilnya: passed atau failed

Setup Maven Project di VSCode

Step 1: Install Extension Java

Buka VSCode, buka Extensions (Ctrl + Shift + X), cari “Extension Pack for Java” dari Microsoft, install.

Step 2: Create Maven Project

Buka Terminal di VSCode (Ctrl + `), ketik:

mvn archetype:generate -DgroupId=com.example -DartifactId=junit-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Tunggu sampai selesai. Ini akan create folder junit-demo dengan struktur lengkap.

Step 3: Open di VSCode

cd junit-demo
code .

Step 4: Project Structure

Setelah open, lo akan lihat struktur folder:

junit-demo/
├── pom.xml
├── src/
│   ├── main/java/com/example/
│   │   └── App.java
│   └── test/java/com/example/
│       └── AppTest.java
└── target/

Penjelasan:

  • pom.xml = File konfigurasi Maven (dependency, build settings, dll)
  • src/main/java/ = Folder untuk production code
  • src/test/java/ = Folder untuk test code
  • target/ = Folder untuk compiled files (ignore ini)

Step 5: Add JUnit 5 Dependency

Buka pom.xml, cari section <dependencies>, tambahkan:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.10.0</version>
    <scope>test</scope>
</dependency>

Setelah simpan, Maven otomatis download dependency JUnit.

Unit Testing di Java dengan JUnit

Panduan Lengkap untuk Pemula

Kalau lo seorang developer Java, pasti pernah ngerasain: “Aduh, apakah code saya ini bener?” Pertanyaan itu dijawab oleh Unit Testing. Di artikel ini, saya akan ajarin lo cara melakukan unit testing di Java menggunakan JUnit, framework testing yang paling populer.


Apa itu Unit Testing?

Unit test adalah cara untuk mengecek apakah sebuah function atau method bekerja dengan benar.

Analogi: Kalau lo jadi mekanik mobil, lo harus test setiap bagian mobil terpisah-pisah sebelum dirakit jadi mobil utuh. Itu yang disebut unit testing — test bagian kecil (unit) terpisah.

Contoh kode tanpa test:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

Apakah method add() bekerja dengan benar? Kita cuma “percaya” saja. Kalau ada bug, kita gak tahu sampai production.

Contoh kode dengan test:

@Test
public void testAdd() {
    Calculator calc = new Calculator();
    int hasil = calc.add(2, 3);
    assertEquals(5, hasil);  // Check: apakah hasilnya 5?
}

Sekarang kita bisa memastikan method add() bekerja dengan benar.


Apa itu JUnit?

JUnit adalah framework (library) yang membuat unit testing di Java jadi mudah.

Tanpa JUnit, kita harus menulis code sendiri untuk:

  • Menjalankan test
  • Check hasil
  • Report hasilnya

Dengan JUnit, semua sudah otomatis!

JUnit versions:

  • JUnit 4 (lama)
  • JUnit 5 (terbaru, yang kami pakai)

Butuh bantuan untuk Unit Testing komponen java projectmu? Langsung aja kontak tim kita disini….


Excel Bukan Buat Anak Akuntansi Saja: 5 Skill Excel yang Dicari Hampir Semua Kantor

Banyak orang masih berpikir Microsoft Excel hanya untuk anak akuntansi atau keuangan. Padahal kenyataannya, hampir semua divisi kantor hari ini membutuhkan Excel, mulai dari admin, HR, marketing, operasional, gudang, hingga pemilik usaha kecil.

Excel bukan lagi soal rumus rumit. Excel adalah alat kerja utama untuk berpikir rapi, cepat, dan efisien.
Berikut 5 skill Excel yang paling sering dicari hampir di semua kantor, bahkan untuk posisi non-akuntansi.


1. Mengelola Data dengan Rapi dan Cepat

Skill dasar tapi krusial. Banyak orang bisa mengisi Excel, tapi tidak semua bisa mengelola data dengan benar.

Yang dicari kantor:

  • Sort & Filter data
  • Freeze header tabel
  • Format tabel agar mudah dibaca
  • Menghindari data dobel dan berantakan

Karyawan yang rapi di Excel = kerja lebih dipercaya.


2. Rumus Dasar yang Dipakai Sehari-hari

Tidak perlu rumus tingkat dewa. Yang penting paham rumus yang benar-benar dipakai di kantor, seperti:

  • SUM, AVERAGE
  • IF
  • COUNT, COUNTA
  • VLOOKUP / XLOOKUP

Skill ini membantu:

  • Rekap laporan
  • Cek data otomatis
  • Mengurangi salah hitung manual

3. Membuat Laporan Otomatis & Cepat

Atasan tidak mau proses panjang. Yang mereka mau: hasil cepat dan jelas.

Skill yang dicari:

  • Membuat template laporan
  • Menghubungkan data antar sheet
  • Update laporan tanpa input ulang

Orang yang bisa bikin laporan rapi di Excel sering dianggap “andalan” di kantor.


4. Visualisasi Data dengan Grafik

Data tanpa grafik = sulit dipahami.

Excel dipakai untuk:

  • Grafik penjualan
  • Grafik performa kerja
  • Ringkasan data bulanan

Dengan grafik:

  • Presentasi lebih meyakinkan
  • Keputusan lebih cepat
  • Nilai profesional naik

5. Efisiensi Kerja (Kerja Lebih Cepat, Lebih Tenang)

Ini skill paling mahal.

Excel membantu:

  • Menghemat waktu berjam-jam
  • Mengurangi kerja berulang
  • Menghindari stres karena data acak

Banyak orang pulang lebih cepat bukan karena kerjanya sedikit, tapi karena Excel-nya rapi.


Kenapa Skill Excel Ini Penting Dipelajari Sekarang?

  • Hampir semua lowongan mencantumkan “menguasai Excel”
  • Gaji bisa sama, tapi yang jago Excel sering lebih dipercaya
  • Cocok untuk fresh graduate, admin, karyawan, hingga UMKM

Belajar Excel bukan soal pintar, tapi soal mau dibimbing dengan benar.


🎯 Mau Belajar Excel dengan Cara Praktis & Mudah Dipahami?

Kami menyediakan kursus MS Excel yang fokus ke kebutuhan kerja nyata, bukan teori rumit.

  • Cocok untuk pemula
  • Materi langsung bisa dipakai di kantor
  • Dibimbing step-by-step

👉 Klik tombol di bawah ini untuk langsung tanya via WhatsApp:

📲 Konsultasi via WhatsApp

#KursusExcel #BelajarExcel #MicrosoftExcel #SkillKantor
#SkillKerja #UpgradeSkill #KursusKomputer #KerjaLebihCepat #AdminKantor #FreshGraduate

Ubah Ide Jadi Visual Menarik dengan Desain Grafis

Di era digital saat ini, visual bukan sekadar pelengkap, melainkan penentu utama apakah sebuah ide akan diperhatikan atau diabaikan. Poster, konten media sosial, logo, banner promosi, hingga presentasi—semuanya membutuhkan sentuhan desain grafis yang tepat agar pesan tersampaikan dengan jelas dan menarik.

Banyak orang sebenarnya punya ide bagus, namun kesulitan menuangkannya ke dalam bentuk visual. Di sinilah desain grafis berperan penting: mengubah ide mentah menjadi karya visual yang komunikatif, profesional, dan bernilai jual.


🎨 Mengapa Desain Grafis Itu Penting?

Desain grafis membantu:

  • Menarik perhatian audiens dalam hitungan detik
  • Meningkatkan kepercayaan terhadap brand atau produk
  • Membuat pesan lebih mudah dipahami
  • Membantu promosi jadi lebih efektif

Tanpa desain yang baik, ide sehebat apa pun bisa terlihat biasa saja.


🚀 Desain Grafis Bukan Soal Bakat, Tapi Teknik

Masih banyak yang berpikir bahwa desain grafis hanya untuk orang berbakat menggambar. Faktanya, desain grafis adalah skill yang bisa dipelajari.

Dengan pemahaman dasar seperti:

  • Komposisi & layout
  • Pemilihan warna
  • Tipografi
  • Penggunaan tools desain

siapa pun bisa membuat desain yang rapi, enak dilihat, dan profesional—bahkan dari nol.


🧠 Apa yang Akan Anda Pelajari?

Dalam program kursus desain grafis kami, Anda akan belajar secara praktis dan terarah, antara lain:

  • Dasar desain grafis untuk pemula
  • Cara mengubah ide menjadi konsep visual
  • Penggunaan software desain populer
  • Studi kasus desain untuk kebutuhan nyata (promosi, UMKM, media sosial)
  • Tips agar desain terlihat profesional & bernilai jual

Belajar tidak hanya teori, tapi langsung praktik dan dibimbing.


🌟 Cocok untuk Siapa?

Kursus ini cocok untuk:

  • Pemula tanpa pengalaman desain
  • Pelajar & mahasiswa
  • Karyawan yang ingin upgrade skill
  • UMKM & pebisnis
  • Siapa pun yang ingin punya skill kreatif bernilai ekonomi

📣 Saatnya Ide Anda Naik Level

Jangan biarkan ide Anda hanya berhenti di kepala. Saatnya mengubah ide menjadi visual menarik yang bisa berbicara dan menjual.

👉 Ayo bergabung dan mulai belajar desain grafis bersama kami sekarang!

📲 Konsultasi & Daftar via WhatsApp

Klik tombol di atas untuk bertanya, konsultasi, atau langsung mendaftar. Kami siap membantu Anda mulai dari nol sampai bisa.


#DesainGrafis, #BelajarDesain, #KursusDesainGrafis, #SkillDigital, #UpgradeSkill, #BelajarDariNol, #DesainUntukBisnis, #KursusKomputer

Stop Salah Hitung Harga! Sistem Grosir Pintar untuk Bisnis Skala Besar

Dalam bisnis grosir, kesalahan kecil dalam perhitungan harga bisa berdampak besar pada keuntungan. Selisih seribu rupiah per item, jika dikalikan ratusan atau ribuan transaksi, bisa berubah menjadi kerugian yang tidak terasa di awal—namun fatal di akhir bulan.

Sayangnya, masih banyak bisnis grosir skala besar yang:

  • Mengatur harga manual
  • Mengandalkan ingatan atau catatan terpisah
  • Mengelola harga grosir, eceran, dan reseller tanpa sistem terpusat

Akibatnya?
Harga sering tidak konsisten, admin kebingungan, dan owner sulit memantau keuntungan real.


Masalah Umum di Bisnis Grosir

Beberapa masalah yang paling sering terjadi di lapangan:

  • ❌ Harga grosir berbeda antara satu pelanggan dan pelanggan lain
  • ❌ Salah input jumlah → harga otomatis ikut salah
  • ❌ Diskon reseller tidak tercatat rapi
  • ❌ Laporan laba tidak sesuai kenyataan
  • ❌ Owner baru sadar rugi saat stok sudah habis

Jika salah satu terasa familiar, berarti bisnis Anda butuh sistem, bukan sekadar tambahan tenaga.


Solusinya: Sistem Grosir Pintar

Sistem grosir pintar dirancang khusus untuk bisnis dengan volume transaksi besar, agar semua perhitungan berjalan otomatis, akurat, dan bisa dikontrol.

Dengan sistem ini, Anda bisa:

  • ✅ Mengatur multi harga (eceran, grosir, reseller, khusus)
  • ✅ Harga otomatis menyesuaikan jumlah pembelian
  • ✅ Minim human error karena sistem yang menghitung
  • ✅ Stok & transaksi tercatat real-time
  • ✅ Laporan penjualan & keuntungan jelas dan transparan

Bukan cuma memudahkan admin, tapi juga memberi kendali penuh kepada owner.


Kenapa Sistem Ini Penting untuk Bisnis Skala Besar?

Bisnis besar tidak boleh bergantung pada ingatan manusia.

Saat transaksi makin banyak:

  • Sistem manual → makin berisiko
  • Kesalahan kecil → makin mahal
  • Tanpa data → sulit berkembang

Sistem grosir pintar membantu Anda:

  • Mengamankan margin keuntungan
  • Menjaga kepercayaan pelanggan grosir & reseller
  • Menyiapkan bisnis untuk tumbuh lebih besar tanpa chaos

Saatnya Beralih ke Sistem yang Kerja untuk Anda

Bayangkan bisnis grosir Anda berjalan dengan:

  • Harga selalu tepat
  • Admin lebih tenang
  • Laporan jelas setiap hari
  • Owner fokus ke strategi, bukan ke koreksi kesalahan

👉 Jangan tunggu sampai kerugian terasa besar.
Konsultasikan kebutuhan bisnis Anda sekarang, dan kami bantu siapkan sistem grosir yang sesuai dengan alur kerja Anda (bukan sistem pasaran yang dipaksa cocok).


Gunakan tombol di bawah ini untuk konsultasi langsung via WhatsApp.
Tanpa ribet—cukup jelaskan kebutuhan bisnis Anda.

💬 Konsultasi Sistem Grosir via WhatsApp

#SistemGrosir, #GrosirDigital, #BisnisGrosir, #ManajemenHarga, #HargaOtomatis, #BisnisSkalaBesar, #PengusahaGrosir, #DigitalisasiBisnis, #SoftwareBisnis, #SolusiBisnis