1. Mengapa Unit Testing Sangat Krusial?
Unit Testing memastikan bahwa setiap unit logika fungsi atau kelas bekerja persis sesuai spesifikasi yang diharapkan dan mencegah *regresi* (munculnya bug lama saat ada penambahan fitur baru).
2. Menulis Kasus Uji dengan Package test
// file: lib/kalkulator_jaringan.dart
int hitungHostValid(int prefix) {
if (prefix < 0 || prefix > 32) throw ArgumentError("Prefix tidak valid");
if (prefix >= 31) return 0;
return (1 << (32 - prefix)) - 2;
}
// file: test/kalkulator_jaringan_test.dart
import 'package:test/test.dart';
void main() {
group('Pengujian Subnetting IPv4', () {
test('Prefix /24 harus menghasilkan 254 host valid', () {
expect(hitungHostValid(24), equals(254));
});
test('Prefix /28 harus menghasilkan 14 host valid', () {
expect(hitungHostValid(28), equals(14));
});
test('Prefix di luar batas harus melempar ArgumentError', () {
expect(() => hitungHostValid(35), throwsArgumentError);
});
});
}
3. Menjalankan Tes Melalui Terminal
dart test
Jika semua test berhasil, terminal akan menampilkan output hijau: All tests passed!.