Flutter Unit Testing

hi hi ສະບາຍດີທຸກຄົນທີ່ກຳລັງສຶກສາ flutter ມື້ນີ້ຂໍສະເໜີຄຳວ່າ “Unit Testing” 555.

ບລັອກນີ້ເກີດຂື້ນຈາກການແນມໄປເຫັນ test folder ໃນໂປຣເຈັກທີ່ກຳລັງເຮັດຢູ່ ເປັນ folder ທີ່ວ່າງແຮງ ^^’. ກໍ่ເລີຍຈັບມາເປັນຫົວຂໍ້ແນະນຳ ແລ້ວກໍຂຽນເທັດຂອງໂປຣເຈັກໄປພ້ອມເລີຍ555.

unit testing ຄືການເອົາ function ຫລື class ທີ່ເຮົາສ້າງມາເທັດເທຶ່ອລະອັນວ່າໂລຈິກຂອງຟັງຊັ່ນພວກນີ້ເປັນໄປຕາມທີ່ມັນຄວນຈະເປັນແລ້ວບໍ່ ຕາມຊື່ເລີຍ.

# ເລີ່ມຕົ້ນດ້ວຍການໄປທີ່ pubspec.yaml ເພີ່ມ flutter_test ໃນສ່ວນຂອງ dev_dependencies

dev_dependencies:
  flutter_test:

ຕໍ່ດ້ວຍການ ກຽມ function ທີ່ຕ້ອງການເທັດ

# ສ້າງ counter.dart file ຢູ່ lib folder lib/counter.dart

class Counter {
  int value = 0;

  void increment() => value++;
}

ມາເລີ່ມຂຽນເທັດສຳຫລັບ function ທີ່ກຽມໄວ້ກັນເລີຍ

# ສ້າງ counter_test.dart file ຢູ່ໃນ test folder test/counter_test.dart

ການຂຽນເທັດໃນ flutter ເຮົາຈະໃຊ້ຄຳສັ່ງ expect (ຄ່າທີ່ໄດ້ຈາກ function, ຄ່າທີ່ເຮົາຄາດວ່າຄວນຈະໄດ້); ເພື່ອກວດສອບຜົນລັບທີ່ໄດ້ຈາກ function

void main() {
  test('Counter value increment', () {
    final counter = Counter();
    counter.increment(); // function ນີ້ຈະເພີ່ມຄ່າຂອງ value ຂື້ນ +1 ທຸກໆເທື່ອທີ່ເອີ້ນໃຊ້ຄຳສັ່ງ
    expect(counter.value, 1); // ຄ່າທີ່ຄວນຈະໄດ້ຈາກ function ຄວນຈະເປັນ 1 ເພາະເຮົາເອີ້ນໃຊ້ function ແຕ່ເທື່ອດຽວ                     
  });
}

ໃນກໍລະນີທີ່ການເທັດມີຫຼາຍເຄສຫຼືຫຼາຍຟັງຊັ່ນເຮົາສາມາດຈັດເທັດເປັນ group ແລ້ວ test ສະເພາະ group ທີ່ຕ້ອງການໄດ້

void main() {
  group('increment', () {
    final counter = Counter();

    test('value start at  0', () {
      expect(counter.value, 0);
    });

    test('value should be 1', () {
      counter.increment();
      expect(counter.value, 1);
    });

    test('value should be 2', () {
      counter.increment();
      expect(counter.value, 2);
    });
  });
}

ຄຳສັ່ງທີ່ໃຊ້:

flutter test test_file_pathເພື່ອ run ເທັດເຄສທັງຫມົດ

flutter test test_file_path --name group_name ເພື່ອ test ສະເພາະ group ທີ່ຕ້ອງການ

ຜົນລັບທີ່ໄດ້ໃນກໍລະນີທີ່ເທັດຜ່ານທັງຫມົດ

ໃນກໍລະນີທີ່ເທັດບໍ່ຜ່ານບາງເຄສ

ສາມາດເຂົ້າໄປອ່ານຂໍ້ມູນເພີ່ມເຕີມ ແລະ ການເທສແບບອື່ນໆຕາມລິ້ງນີ້ໄດ້ເລີຍ https://docs.flutter.dev/testing

ຫວັງວ່າຈະເປັນປະໂຫຍດກັບຄົນທີ່ເຂົ້າມາອ່ານບໍ່ຫລາຍກໍຫນ້ອຍເດີ 😀