你如何確保你的應用程序在添加更多功能或更改現有功能時能繼續正常工作?答案是寫測試。
單元測試可以很容易的測試單個函數、方法、或者類。這個 test 包提供了寫單元測試的核心框架,然后這個 flutter_test 包額外提供了更多測試Widget的實用工具。
這個目錄演示了 test 包提供的核心功能,關于test包的更多信息請查看這里。
目錄:
- 添加
test
或flutter_test
依賴 - 創建 test 文件
- 創建一個類用來測試
- 在我們的類里寫一個單元測試
- 使用
group
來結合多個測試 - 運行測試
1. 添加 test
或 flutter_test
依賴
如果你僅僅使用Dart包的代碼而不依賴Flutter,你可以僅僅導入 test 包。這個 test 包提供了在Dart里寫單元測試的核心功能。這是編寫Web、服務器和Flutter應用程序的單元測試的最佳方法。
dev_dependencies:
test: <latest_version>
2. 創建 test 文件
在這個例子里,創建2個文件: counter.dart
和 counter_test.dart
.
這個 counter.dart
文件將會包含一個你想要測試的類,放到 lib 文件夾下面。這個 counter_test.dart
文件將會包含測試本身并且放到 test 文件夾下。
一般來說,test 文件應該保存在 test 文件夾下面,而test 文件夾位置在你的Flutter應用程序或者包的根目錄。
當你做完這些以后,這個文件夾架構應該像下面這樣:
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