pwa_android_native

Cocok mana Native Android atau PWA Android based?

Menentukan apakah aplikasi mobile harus dibangun sebagai Progressive Web App (PWA) atau Native App sering kali menjadi dilema besar di awal karier sebagai developer. Kedua teknologi ini memiliki kelebihan mutlak yang sangat bergantung pada kebutuhan bisnis dan target pengguna. Sebagai junior developer, memahami kapan harus memilih salah satu di antaranya adalah kunci untuk menghemat waktu, tenaga, dan anggaran proyek secara efisien.

Kamu sebaiknya memilih PWA jika proyekmu menuntut kecepatan rilis dan efisiensi biaya yang tinggi. PWA sangat cocok jika aplikasimu pada dasarnya adalah platform berbasis web (seperti e-commerce, portal berita, atau sistem informasi) yang ingin bisa diakses dengan cepat tanpa memaksa pengguna mengunduhnya via Play Store. PWA juga menjadi penyelamat jika kamu ingin aplikasi langsung berjalan di Android sekaligus iOS hanya dengan satu basis kode (single codebase) HTML, CSS, dan JavaScript.

📌 Kapan Pilih PWA?

  • Budget dan Waktu Terbatas: Ingin aplikasi cepat rilis (Time-to-Market singkat) dengan satu tim web developer saja.
  • Akses Multi-Platform: Aplikasi harus bisa dibuka di Android, iOS, dan Desktop sekaligus dari satu kode.
  • Kemudahan Update: Ingin pembaruan fitur langsung aktif saat user membuka aplikasi, tanpa perlu proses review berkala di Play Store.
  • Ramah Penyimpanan: Target pengguna memiliki perangkat dengan memori internal terbatas (PWA umumnya berukuran di bawah 2–3 MB).

Di sisi lain, Native App (Android Murni) menjadi harga mati jika aplikasimu membutuhkan performa tinggi dan integrasi mendalam dengan perangkat keras. Jika kamu sedang membangun aplikasi yang bergantung penuh pada sensor kompleks, pemrosesan grafis berat seperti game 3D, atau membutuhkan enkripsi data tingkat tinggi di memori lokal, PWA tidak akan mampu mengejarnya. Selain itu, Native App memberikan user experience (UX) yang jauh lebih mulus karena komponen UI-nya dirender langsung oleh sistem operasi Android.

📌 Kapan Harus Murni Native Android?

  • Performa Grafis & Komputasi Tinggi: Aplikasi berupa game, pemrosesan video/audio, atau animasi UI yang kompleks.
  • Akses Hardware Tingkat Lanjut: Membutuhkan kontrol penuh atas Bluetooth, NFC, sensor biometrik (Fingerprint/FaceID), atau kamera dengan kustomisasi mendalam.
  • Notifikasi yang Andal & Background Processing: Aplikasi membutuhkan push notification yang 100% konsisten dan background task yang tetap berjalan saat aplikasi ditutup.
  • Monetisasi In-App Purchase: Ingin mengintegrasikan sistem pembayaran langsung via Google Play Billing dengan mudah.

Kesimpulannya, jangan memilih teknologi hanya karena sedang populer, melainkan pilihlah berdasarkan fitur utama aplikasi yang akan kamu buat. Mulailah dengan PWA jika aplikasi berfokus pada penyampaian konten dan kemudahan akses. Namun, beralihlah ke Native murni sejak awal jika interaksi hardware dan performa maksimal adalah fondasi utama dari aplikasi tersebut.

📲 Konsultasi & Daftar via WhatsApp
WP-Application-Credentials

WP Application Credentials

Application Credentials alias Application Password itu BUKAN password login user yang biasa. Ini adalah password acak 24 karakter yang digenerate khusus oleh WordPress untuk aplikasi pihak ketiga (bisa diterapkan ke berbagai webhook / Extension integrator).

Cara user generate-nya gampang banget (Tanpa Plugin) Ini khusus WP 5.6 and above yaaa:

  1. User login ke wp-admin dulu.
  2. Pergi ke menu Users $\rightarrow$ klik Profile (atau klik Your Profile).
  3. Scroll ke paling bawah sampai ketemu section bernama “Application Passwords”.
  4. Di kolom “New Application Password Name”, ketik nama bebas (misal: Integration Data).
  5. Klik tombol “Add New Application Password”.
  6. BUM! WordPress bakal nampilin password acak sepanjang 24 karakter (contoh: abcd efgh ijkl mnop qrst uvwx).
  7. User tinggal copy password itu, lalu paste ke berbagai penggunaan integrasinya.

Ada kesulitan untuk menggunakan Application Password? Atau WP nya masih versi lama dan perlu menerapkan fitur yg sama? Bongkar habis di kelas web programming bersama tim expert disini!

Headless Command Prompt ala Task Scheduler

Pernah buat penjadwalan otomatis script di Windows? Memang lingkungan yang satu ini agak berbeda dengan cronjob versi linux. So tiap kali execution berjalan akan menimbulkan Black Box Windows yg tidak diinginkan. Untuk itu di Windows Task Scheduler, ada 1 cara untuk menyembunyikan (headless/background) jendela CMD tersebut. Berikut adalah cara yang paling efektif:

Mengubah Opsi User Account

Ini adalah cara bawaan Task Scheduler yang paling sering digunakan untuk membuat task berjalan benar-benar di background.

  1. Buka Task Scheduler dan cari task yang Anda buat.
  2. Klik kanan pada task tersebut, lalu pilih Properties.
  3. Pada tab General, lihat bagian Security options di bawah.
  4. Pilih opsi “Run whether user is logged on or not” (Jalankan baik user sedang log on maupun tidak).
  5. (Opsional) Centang juga “Do not store password…” jika Anda tidak ingin Windows meminta password Windows Anda setiap kali task di-save (ini aman selama script tidak butuh akses ke network share tertentu).
  6. Klik OK.

Catatan: Dengan cara ini, CMD tidak akan memunculkan jendela sama sekali karena Windows menjalankannya di sesi non-interaktif (Session 0).

Butuh Bantuan Mengolah Data dan Membuat Laporan? Belajar Bersama Mentor Berpengalaman

Di era kerja yang semakin berbasis data, kemampuan mengolah data dan membuat laporan yang rapi bukan lagi sekadar nilai tambah, melainkan kebutuhan utama bagi banyak karyawan. Sayangnya, tidak sedikit profesional yang masih menghadapi berbagai tantangan saat bekerja dengan Microsoft Excel, mulai dari penggunaan rumus, pembuatan laporan bulanan, pengolahan data dalam jumlah besar, hingga penyusunan dashboard yang mudah dipahami.

Apakah Anda sering mengalami situasi seperti berikut?

  • Kesulitan membuat laporan yang diminta atasan.
  • Bingung menggunakan rumus Excel seperti VLOOKUP, XLOOKUP, IF, SUMIFS, atau Pivot Table.
  • Menghabiskan waktu berjam-jam hanya untuk merapikan data.
  • Sering melakukan pekerjaan secara manual yang sebenarnya bisa diotomatisasi.
  • Harus menyelesaikan tugas penting dalam waktu singkat tetapi belum memahami teknik pengolahan data yang tepat.

Jika Anda pernah mengalami salah satu kondisi di atas, Anda tidak sendirian. Banyak karyawan dari berbagai bidang pekerjaan menghadapi tantangan yang sama setiap hari.

Solusi Belajar yang Langsung Sesuai Kebutuhan Pekerjaan

Kami memahami bahwa setiap peserta memiliki kebutuhan yang berbeda. Karena itu, program pendampingan kami dirancang untuk membantu Anda menyelesaikan masalah nyata yang sedang dihadapi di kantor.

Tidak hanya belajar teori, Anda dapat membawa file pekerjaan, contoh laporan, atau kasus yang sedang dikerjakan untuk dibahas langsung bersama mentor berpengalaman.

Materi yang dapat dipelajari antara lain:

  • Dasar hingga mahir Microsoft Excel
  • Rumus dan fungsi Excel untuk pekerjaan kantor
  • Pengolahan data dan analisis data
  • Pivot Table dan Pivot Chart
  • Dashboard dan visualisasi data
  • Pembuatan laporan otomatis
  • Rekap data dan administrasi kantor
  • Microsoft Word dan PowerPoint untuk kebutuhan profesional
  • Tips meningkatkan produktivitas kerja dengan tools perkantoran

Belajar Bersama Mentor Berpengalaman

Salah satu faktor penting dalam proses belajar adalah mendapatkan bimbingan yang tepat. Dengan mentor berpengalaman, Anda dapat memperoleh solusi yang lebih cepat dan efektif dibandingkan belajar sendiri melalui video atau artikel yang sering kali tidak sesuai dengan kebutuhan pekerjaan Anda.

Keuntungan belajar bersama mentor:

  • Materi disesuaikan dengan kebutuhan pekerjaan.
  • Bisa bertanya langsung hingga benar-benar paham.
  • Mendapat solusi untuk kasus yang sedang dihadapi.
  • Belajar lebih cepat dan terarah.
  • Meningkatkan kepercayaan diri dalam bekerja.

Cocok untuk Berbagai Profesi

Program ini cocok untuk:

  • Staff Administrasi
  • Staff Keuangan dan Accounting
  • HRD dan Personalia
  • Marketing dan Sales
  • Supervisor dan Manager
  • Operator Data
  • Mahasiswa Magang
  • Fresh Graduate yang ingin siap kerja

Tingkatkan Produktivitas dan Peluang Karier Anda

Kemampuan mengolah data dan membuat laporan yang profesional dapat membantu Anda bekerja lebih cepat, mengurangi kesalahan, dan memberikan hasil kerja yang lebih baik. Tidak sedikit perusahaan yang menjadikan kemampuan Excel dan pengolahan data sebagai salah satu kompetensi penting dalam promosi jabatan maupun proses rekrutmen.

Investasi pada keterampilan kerja hari ini dapat memberikan manfaat besar untuk perkembangan karier Anda di masa depan.

Mulai Belajar Sekarang

Jangan biarkan kesulitan mengolah data dan membuat laporan menghambat produktivitas Anda. Dapatkan pendampingan langsung dari mentor berpengalaman dan pelajari keterampilan yang benar-benar dibutuhkan dalam pekerjaan sehari-hari.

Hubungi kami sekarang untuk konsultasi gratis dan temukan program belajar yang paling sesuai dengan kebutuhan Anda.

#BelajarExcel #KursusExcel #MicrosoftExcel #ExcelUntukKerja #SkillKantor #ProduktivitasKerja #PelatihanExcel #BelajarData #PengolahanData #LaporanKerja #KaryawanIndonesia #UpgradeSkill #MentorExcel #KarierProfesional #KursusKomputer #PelatihanKaryawan #ExcelPemula #ExcelMahir #SkillDigital

Persiapan Cerdas: Kuasai Microsoft Office untuk Mempermudah Jalan Masuk TNI dan Kepolisian

Menjadi anggota TNI atau Kepolisian merupakan cita-cita banyak anak muda Indonesia. Namun, di era digital saat ini, persaingan semakin ketat. Tidak hanya kemampuan fisik dan mental yang diuji, tetapi juga kemampuan dalam menguasai teknologi, khususnya Microsoft Office.

Banyak calon pendaftar yang belum menyadari bahwa kemampuan ini bisa menjadi nilai tambah yang signifikan dalam proses seleksi maupun saat sudah menjalankan tugas nantinya.


Mengapa Microsoft Office Itu Penting?

Di lingkungan TNI dan Kepolisian, pekerjaan administrasi memiliki peran penting. Hampir setiap kegiatan membutuhkan dokumentasi yang rapi dan sistematis.

Berikut beberapa alasan mengapa Microsoft Office wajib dikuasai:

  • Membantu membuat laporan resmi dengan rapi dan profesional
  • Mempermudah pengolahan data dan informasi
  • Digunakan dalam presentasi kegiatan atau briefing
  • Menunjukkan kesiapan dan kompetensi di era digital

Skill yang Harus Dikuasai

1. Microsoft Word

Digunakan untuk:

  • Membuat surat resmi
  • Menyusun laporan kegiatan
  • Mengatur format dokumen sesuai standar

2. Microsoft Excel

Digunakan untuk:

  • Mengolah data peserta atau kegiatan
  • Menggunakan rumus dasar seperti SUM dan AVERAGE
  • Membuat tabel dan grafik sederhana

3. Microsoft PowerPoint

Digunakan untuk:

  • Membuat bahan presentasi
  • Menyampaikan laporan secara visual
  • Menyusun informasi secara sistematis

Keuntungan Menguasai Microsoft Office

Dengan menguasai Microsoft Office, kamu akan mendapatkan banyak manfaat seperti:

  • ✅ Lebih siap menghadapi seleksi
  • ✅ Memiliki nilai tambah dibanding peserta lain
  • ✅ Lebih percaya diri saat tes administrasi
  • ✅ Mempermudah pekerjaan setelah diterima

Tips Belajar untuk Pemula

Agar cepat menguasai Microsoft Office, kamu bisa mulai dengan langkah berikut:

  • Belajar dari dasar secara bertahap
  • Latihan setiap hari secara konsisten
  • Gunakan contoh nyata seperti membuat surat atau laporan
  • Ikuti bimbingan atau pelatihan
  • Jangan takut mencoba dan belajar dari kesalahan

Kesimpulan

Di era modern ini, menjadi anggota TNI atau Kepolisian tidak cukup hanya mengandalkan fisik dan mental. Kemampuan teknologi seperti Microsoft Office menjadi bekal penting yang dapat membantu kamu lolos seleksi dan sukses dalam karier.

Persiapkan dirimu dari sekarang agar tidak tertinggal dari peserta lain.


🚀 Ingin lebih cepat menguasai Microsoft Office dengan bimbingan yang tepat?
Yuk mulai sekarang dan tingkatkan peluangmu untuk lolos TNI & Polri!


#TNI #Polri #PersiapanTNI #PersiapanPolri
#LolosTNI #LolosPolri #TesTNI #TesPolri
#MicrosoftOffice #BelajarKomputer #SkillDigital
#KursusKomputer #SiapLolos #PejuangTNI #PejuangPolri

validasi-file-upload-jquery

Validasi File Upload (JQuery)

Untuk melakukan validasi file di sisi client (sebelum submit) menggunakan jQuery, kamu bisa memanfaatkan API files bawaan browser yang diakses melalui selector jQuery. Bagi para web developers hal ini sangat membantu sekali dalam penerapan javascript khususnya.

Berikut adalah cara praktis untuk mengecek tipe file (MIME type) dan ukurannya:

Kode Implementasi

Pastikan kamu sudah memanggil library jQuery di file HTML kamu.JavaScript

$(document).ready(function() {
    $('#fileInput').on('change', function() {
        // Ambil data file pertama
        const file = this.files[0];
        const fileType = file.type;
        const fileSize = file.size; // dalam bytes
        const limitSize = 2 * 1024 * 1024; // 2 MB

        // 1. Validasi Tipe File (harus PDF)
        if (fileType !== 'application/pdf') {
            alert('Waduh, cuma boleh file PDF aja nih!');
            $(this).val(''); // Reset input file
            return false;
        }

        // 2. Validasi Ukuran File (max 2MB)
        if (fileSize > limitSize) {
            alert('Kegedean bro! Maksimal file cuma 2 MB.');
            $(this).val(''); // Reset input file
            return false;
        }

        console.log('File aman, siap di-submit!');
    });
});

Penjelasan Singkat

  • this.files[0]: Karena input file bisa mendukung multiple, kita ambil indeks pertama untuk input tunggal.
  • file.type: Digunakan untuk mengecek MIME type. Untuk PDF, nilainya adalah application/pdf.
  • file.size: Ukuran file dihitung dalam satuan Byte. Jadi untuk 2 MB, perhitungannya adalah $2 \times 1024 \times 1024$.
  • $(this).val(''): Ini penting supaya inputan di-reset jika tidak valid. Kalau tidak di-reset, user masih bisa memaksakan submit file yang salah tadi.

Tips Tambahan (UX)

Agar user tidak bingung dari awal, tambahkan atribut accept pada tag HTML kamu. Ini akan memfilter file di jendela pemilihan dokumen secara otomatis, meskipun validasi JavaScript di atas tetap wajib ada untuk keamanan.HTML

<input type="file" id="fileInput" accept="application/pdf">

Gimana sudah kebayangkan? Sip… lanjutkan explorasi dan implementasinya di web system terus yaa…!

Cara Whitelist Domain di Exim4 Agar Tidak Terblokir Spamhaus & Filter Spam

Seringkali email dari pengirim valid (seperti Gmail atau Outlook) ditolak oleh server mail sendiri karena IP mereka masuk ke daftar DNSBL (seperti Spamhaus) atau mendapatkan skor spam yang tinggi. Tutorial ini akan membahas cara melakukan whitelist domain secara menyeluruh di Exim4.

1. Persiapan File Whitelist

Pertama, kita buat file khusus untuk menampung daftar domain yang dipercaya. Hal ini memudahkan manajemen tanpa harus mengedit file konfigurasi utama setiap saat.Bash

nano /etc/exim4/whitelist_domains

Isi dengan daftar domain (satu domain per baris), contoh:Plaintext

gmail.com
google.com
fgroupindonesia.com
adaro.com

2. Whitelist di Sisi SMTP (Bypass DNSBL)

Agar email tidak ditolak di awal koneksi oleh Spamhaus atau Spamcop, kita harus mengedit ACL (Access Control List) pada bagian RCPT.

Buka file template konfigurasi Exim4:Bash

nano /etc/exim4/exim4.conf.template

Cari blok acl_check_rcpt:. Sisipkan baris accept sender_domains tepat DI ATAS baris deny yang berisi dnslists:Code snippet

acl_check_rcpt:
  accept authenticated = *

  # Whitelist Domain agar bypass DNSBL
  accept sender_domains = lsearch;/etc/exim4/whitelist_domains
         log_message = Whitelisted domain $sender_address_domain detected, skipping DNSBL.

  deny
    message = Rejected - listed in $dnslist_domain
    dnslists = zen.spamhaus.org : bl.spamcop.net

3. Whitelist di Sisi Data (Bypass Content Scanner)

Meskipun sudah diterima di gerbang depan, email masih bisa ditandai sebagai spam oleh SpamAssassin. Untuk menghindarinya, kita harus membypass proses scanning di bagian DATA.

Masih di file yang sama, cari blok acl_check_data:. Sisipkan aturan accept di bagian paling atas:Code snippet

acl_check_data:

  # Bypass scan spam untuk domain whitelist
  accept sender_domains = lsearch;/etc/exim4/whitelist_domains
         log_message = Skipping spam scan for whitelisted domain $sender_address_domain

  # Scan pakai SpamAssassin (Hanya dijalankan jika tidak kena whitelist di atas)
  warn
    spam = nobody:true
    add_header = X-Spam-Score: $spam_score
    add_header = X-Spam-Status: Yes score=$spam_score

4. Update Konfigurasi dan Restart Service

Setelah file template diubah, kita harus mengompilasi ulang konfigurasi Exim4 agar perubahan tersebut diterapkan ke file konfigurasi aktif, lalu melakukan restart service.Bash

# Update konfigurasi dari template
update-exim4.conf

# Restart service Exim4
systemctl restart exim4

5. Verifikasi dan Monitoring

Langkah terakhir adalah memastikan konfigurasi berjalan dengan benar. Kosongkan log lama agar lebih mudah memantau email yang baru masuk.Bash

# Kosongkan log (Optional)
cat /dev/null > /var/log/exim4/mainlog

# Pantau log secara real-time
tail -f /var/log/exim4/mainlog

Hasil yang diharapkan:

Jika pengiriman berhasil, Anda akan melihat status Completed di log. Jika konfigurasi whitelist berhasil membypass filter spam, log tidak akan lagi menunjukkan R=localuser_spam, melainkan menggunakan router default seperti R=localuser.


Perlu bantuan khusus tangani Server Linux anda? Hubungi tim ahli kami segera di nomor official whatsapp yg tertera di website ini.

WPM Tracker – Tool Gratis untuk Mengukur Kecepatan Mengetik di Microsoft Word

WPM Tracker (Word Per Minute Tracker) adalah aplikasi desktop ringan yang dirancang untuk membantu pengguna PC atau laptop mengukur kecepatan mengetik secara real-time saat menggunakan Microsoft Word.

Banyak orang menggunakan berbagai website untuk melakukan tes kecepatan mengetik, namun ketika bekerja di dokumen asli seperti laporan, artikel, atau skripsi di Microsoft Word, kita sering tidak tahu berapa sebenarnya kecepatan mengetik kita saat bekerja secara nyata.

Di sinilah WPM Tracker menjadi sangat berguna. Tool ini dapat mendeteksi aktivitas mengetik dan secara otomatis menghitung Words Per Minute (WPM) saat Anda mengetik di Word.

Dengan mengetahui WPM secara real-time, pengguna dapat:

  • memonitor produktivitas mengetik
  • meningkatkan kemampuan mengetik
  • mengetahui performa saat menulis dokumen panjang
  • melatih typing speed secara natural saat bekerja

Apa Itu WPM (Words Per Minute)?

WPM atau Words Per Minute adalah metrik yang digunakan untuk mengukur berapa banyak kata yang dapat diketik dalam satu menit.

Sebagai gambaran umum:

  • 20 – 30 WPM → kecepatan mengetik dasar
  • 30 – 50 WPM → kecepatan normal pengguna komputer
  • 50 – 70 WPM → cepat
  • 70+ WPM → sangat cepat / profesional

Dengan menggunakan WPM Tracker, Anda dapat mengetahui kecepatan mengetik Anda secara langsung ketika menulis dokumen di Microsoft Word.


Fitur WPM Tracker

Berikut beberapa fitur utama dari aplikasi ini:

  • Freeware (100% gratis digunakan)
  • Real-time typing speed detection
  • Monitoring Words Per Minute (WPM)
  • Lightweight desktop application
  • User friendly interface
  • Portable (tidak perlu instalasi rumit)
  • Berjalan di background tanpa mengganggu aktivitas mengetik
  • Compatible dengan Microsoft Word

Aplikasi ini dibuat ringan sehingga tidak akan membebani sistem saat digunakan.


Siapa yang Cocok Menggunakan WPM Tracker?

Tool ini sangat berguna bagi banyak profesi yang sering bekerja dengan dokumen, seperti:

  • Writer / penulis artikel
  • Blogger
  • Content creator
  • Programmer
  • Mahasiswa yang menulis skripsi
  • Data entry
  • Pekerja kantor
  • Freelancer

Jika Anda ingin meningkatkan produktivitas mengetik, mengetahui kecepatan mengetik sebenarnya, atau melatih touch typing, maka aplikasi ini bisa menjadi tool yang sangat membantu.


Apakah WPM Tracker Gratis?

Ya. WPM Tracker sepenuhnya GRATIS untuk digunakan.

Anda dapat langsung mengunduh dan menggunakan aplikasi ini tanpa biaya apapun.


Cara Menggunakan WPM Tracker

Penggunaan aplikasi ini sangat sederhana:

  1. Jalankan aplikasi WPM Tracker
  2. Buka Microsoft Word
  3. Mulai mengetik seperti biasa
  4. Aplikasi akan otomatis menghitung kecepatan mengetik (WPM) secara real-time

Dengan cara ini Anda dapat memonitor performa mengetik tanpa perlu membuka website tes typing.


Compatibility

Aplikasi ini dapat digunakan pada sistem operasi berikut:

windows compatibility

Download WPM Tracker

Silakan unduh aplikasi melalui link berikut:

Download:

Windows x64bit (link)

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.