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 ເທສເຄສ (Test Case) ທັງຫມົດ

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

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

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

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

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

ຂຽນໂດຍ: Bout Khanthavong