Setiap orang ingin membuat aplikasi yang sangat canggih dan harus bug free. Untuk itulah kita harus bisa melakukan uji coba terhadap semua logika, fungsi dan operasi yang ada didalam aplikasi kita. Untuk itu lah kita melakukan yang dinamakan ‘Unit Test’. Unit digunakan untuk menguji fungsionalitas di dalam fungsi, method dan class yang kita buat.

Kita akan mencoba membuat unit test sederhana untuk men-validasi email dan password menggunakan regex.

Pertama pastikan flutter_test lib yang disediakan flutter sudah dimasukan ke dalam file pubspec.yaml. Tapi biasanya setiap kita membuat projek flutter, hal ini sudah ada di dalam projek yang kita buat.

dev_dependencies:
  flutter_test:
    sdk: flutter

Selanjutnya di dalam projek flutter yang sudah kita buat, buat folder lib/utils. Kita akan membuat file validator.dart untuk melakukan unit test terhadap email dan password.

class FieldValidator{
  static String validateEmail(String value){
    if(value.isEmpty) return 'Masukan email';

    bool isEmailValid = RegExp(r"^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(value);
    if(!isEmailValid){
      return 'Masukan email yang valid';
    }else{
      return null;
    }
  }

  static String validatePassword(String value){
    if(value.isEmpty) return "Masukan password!";

    if(value.length < 7){
      return "Minimal password sebanyak 7 karakter";
    }else{
      return null;
    }
  }
}

Selanjutnya di dalam folder test pada projek, kita buat satu file untuk melakukan pengujian dengan nama email_password_validation_test.dart

import 'package:huiowner/utils/validator.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  test('Testing Email Kosong', () {
    var result = FieldValidator.validateEmail('');
    expect(result, 'Masukan email');
  });

  test('Testing Email yang tidak valid', () {
    var result = FieldValidator.validateEmail('nirwan@gmail');
    expect(result, 'Masukan email yang valid');
  });

  test('Test email yang valid', () {
    var result = FieldValidator.validateEmail('nirwan@gmail.com');
    expect(result, null);
  });

  test('Testing password kosong', () {
    var result = FieldValidator.validatePassword('');
    expect(result, 'Masukan password!');
  });

  test('Testing password yang salah', () {
    var result = FieldValidator.validatePassword('123');
    expect(result, 'Minimal password sebanyak 7 karakter');
  });

  test('Testing password yang valid', () {
    var result = FieldValidator.validatePassword('nirwan123');
    expect(result, null);
  });
}

Kita akan melakukan pengujian di dalam method main agar bisa langsung di eksekusi. Di dalam kode di atas, terdapat method test yang memiliki 2 parameter masukan. Yakni nama fungsi yang akan diuji dan operasi testing yang akan dijalankan. Di dalam operasi masing-masing test terdapat expected result yang diinginkan sesuai dengan hasil testing yang diinginkan.

Sebagai contoh kita akan mengecek kita email yang kita masukan tidak diisi maka fungsi akan mengembalikan teks ‘Masukan email’.

test('Testing Email Kosong', () {
    var result = FieldValidator.validateEmail('');
    expect(result, 'Masukan email');
  });

Kita coba jalan kan unit test diatas dengan tombol hijau yang ada di sebelah fungsi main di android studio.

Setelah kita menjalankan unit test di atas, akan ada tampilan apakah kita berhasil melakukan pengujian atau tidak di bawah tab Run android studio.

Kurang lebih begitu cara melakukan unit test. Sederhana bukan dan kita pun memilik kepercayaan terhadap semua fungsi dan kode yang kita buat sehingga membuat aplikasi kita bug free.

Have a nice day 🙂