Testing Flutter apps翻譯-單元測試簡介

翻譯首頁html

你如何確保你的應用程序在添加更多功能或更改現有功能時能繼續正常工做?答案是寫測試。git

單元測試能夠很容易的測試單個函數、方法、或者類。這個 test 包提供了寫單元測試的核心框架,而後這個 flutter_test 包額外提供了更多測試Widget的實用工具。github

這個目錄演示了 test 包提供的核心功能,關於test包的更多信息請查看這裏api

目錄:

  1. 添加 test 或 flutter_test 依賴
  2. 建立 test 文件
  3. 建立一個類用來測試
  4. 在咱們的類裏寫一個單元測試
  5. 使用 group 來結合多個測試
  6. 運行測試

1. 添加 test 或 flutter_test 依賴

若是你僅僅使用Dart包的代碼而不依賴Flutter,你能夠僅僅導入 test 包。這個 test 包提供了在Dart裏寫單元測試的核心功能。這是編寫Web、服務器和Flutter應用程序的單元測試的最佳方法。bash

dev_dependencies:
  test: <latest_version>
複製代碼

2. 建立 test 文件

在這個例子裏,建立2個文件: counter.dartcounter_test.dart.服務器

這個 counter.dart文件將會包含一個你想要測試的類,放到 lib 文件夾下面。這個 counter_test.dart 文件將會包含測試自己而且放到 test 文件夾下。架構

通常來講,test 文件應該保存在 test 文件夾下面,而test 文件夾位置在你的Flutter應用程序或者包的根目錄。app

當你作完這些之後,這個文件夾架構應該像下面這樣:框架

counter_app/
  lib/
    counter.dart
  test/
    counter_test.dart
複製代碼

3. 建立一個被測試的類

下一步,你須要一個「單元」用來測試,記住,「單元」的意思是一個函數、方法或者類的代稱,在這個例子裏,在 lib/counter.dart 裏建立一個Counter類,它將負責給一個初始爲0的值增長值或減少值。函數

class Counter {
  int value = 0;

  void increment() => value++;

  void decrement() => value--;
}
複製代碼

**注意:**爲了簡單起見,本教程沒有遵循「測試驅動開發」的方式。若是你更喜歡「測試驅動開發」的方式你也可使用。

4. 在咱們的類裏寫一個單元測試

在這個 counter_test.dart 文件裏,寫下咱們第一個單元測試。測試定義在頂級函數裏,你可使用頂級 expect 函數檢查結果是否正確。這兩個函數都來自 test 包。

// Import the test package and Counter class
import 'package:test/test.dart';
import 'package:counter_app/counter.dart';

void main() {
  test('Counter value should be incremented', () {
    final counter = Counter();

    counter.increment();

    //若是counter.value的值等於1則測試經過
    expect(counter.value, 1);
  });
}
複製代碼

5. 使用 group 來結合多個測試

若是你有幾個函數彼此相關,你可使用 test 包的 group 函數。

import 'package:test/test.dart';
import 'package:counter_app/counter.dart';

void main() {
  group('Counter', () {
    test('value should start at 0', () {
      expect(Counter().value, 0);
    });

    test('value should be incremented', () {
      final counter = Counter();

      counter.increment();

      expect(counter.value, 1);
    });

    test('value should be decremented', () {
      final counter = Counter();

      counter.decrement();

      expect(counter.value, -1);
    });
  });
}
複製代碼

6. 運行測試

如今你有了一個 Counter 類的單元測試,你如今能夠運行這個測試了。

使用IntelliJ或者VSCode運行測試

IntelliJ和VSCode的Flutter插件支持運行單元測試。 這一般是編寫測試時的最佳選擇,由於它提供了最快的反饋循環以及設置斷點的能力。

IntelliJ 1. 打開 counter_test.dart 文件 2. 選擇 Run 菜單 3. 點擊 Run 'tests in counter_test.dart' 選項 4. 或者,爲您的平臺使用適當的鍵盤快捷方式。

VSCode 1. 打開 counter_test.dart 文件 2. 選擇 Debug 菜單 3. 點擊 Start Debugging 選項 4. 或者,爲您的平臺使用適當的鍵盤快捷方式。

在終端運行測試

你也能夠在項目的根目錄使用下面的命令在終端運行測試:

flutter test test/counter_test.dart
複製代碼
相關文章
相關標籤/搜索