Flutter Unit Testing

Bout Khanthavong
LaoITDev
Published in
2 min readApr 28, 2023

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

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

--

--