一、CentOS上Flutter测试前置准备
sudo yum install -y java-17-openjdk-devel安装,安装后用java -version验证是否成功。git clone https://github.com/flutter/flutter.git),解压至指定目录(如~/flutter),然后运行flutter doctor检查依赖完整性。bin目录添加到PATH中。编辑~/.bashrc文件,添加以下内容:export PATH="$HOME/flutter/bin:$PATH"
export PATH="$PATH:$HOME/.pub-cache/bin"
执行source ~/.bashrc使配置生效。docker pull flutter:latest),运行容器时挂载项目目录(-v $(pwd):/app)。二、编写测试脚本
test目录下创建测试文件(如counter_test.dart),使用flutter_test包编写测试用例。示例代码:import 'package:flutter_test/flutter_test.dart';
import 'package:your_app/main.dart'; // 替换为你的主文件
void main() {
test('Counter increments correctly', () {
final counter = Counter();
expect(counter.value, 0);
counter.increment();
expect(counter.value, 1);
});
}
test_driver目录,在其中编写测试脚本(如integration_test.dart)。示例代码:import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:your_app/main.dart' as app;
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
testWidgets('Tap button increments counter', (WidgetTester tester) async {
app.main(); // 启动应用
await tester.pumpAndSettle(); // 等待界面渲染
// 查找并点击按钮
await tester.tap(find.byKey(ValueKey('increment_button')));
await tester.pump(); // 触发动画
// 验证文本变化
expect(find.text('Count: 1'), findsOneWidget);
});
}
注意:集成测试需在真实设备或模拟器上运行。三、运行测试
flutter test,自动运行test目录下所有测试文件。flutter drive --target=test_driver/integration_test.dart),再运行测试脚本。docker run -v $(pwd):/app -w /app flutter:latest flutter test
此命令会将项目挂载到容器中并运行测试。四、集成到CI/CD管道
以GitHub Actions为例,创建.github/workflows/flutter_ci.yml文件,配置如下:
name: Flutter CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Install Flutter
run: |
git clone https://github.com/flutter/flutter.git -b stable --depth 1
echo "$HOME/flutter/bin" >> $GITHUB_PATH
flutter doctor
- name: Run tests
run: flutter test
此配置会在每次代码推送或拉取请求时自动运行测试,确保代码质量。