Flutter插件ozzie的使用方法介绍
ozzie.flutter
Ozzie 是您的集成测试助手。它会在您需要时自动截取屏幕截图,并生成性能报告。
如何工作?
在 pubspec.yaml文件中将 ozzie添加为开发依赖项:
dev_dependencies:
ozzie: <最新版本>
在 Flutter 的集成测试中,创建一个 Ozzie
实例,传入 FlutterDriver
,指定一个 groupName
,然后调用 takeScreenshot
方法即可。完成测试后,可以通过 generateHtmlReport
方法生成 HTML 报告。
如果需要测量应用程序的性能,只需将集成测试包装在 profilePerformance
中,该性能数据会自动添加到 HTML 报告中。
示例代码
以下是一个完整的示例,展示如何使用 ozzie
插件:
import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';
import 'package:ozzie/ozzie.dart';
void main() {
FlutterDriver driver;
Ozzie ozzie;
// 在所有测试开始前初始化驱动程序和 Ozzie
setUpAll(() async {
driver = await FlutterDriver.connect();
ozzie = Ozzie.initWith(driver, groupName: 'counter');
});
// 测试结束后生成 HTML 报告并关闭驱动程序
tearDownAll(() async {
if (driver != null) driver.close();
ozzie.generateHtmlReport();
});
// 测试初始计数器值是否为 0
test('初始计数器值为 0', () async {
await ozzie.profilePerformance('counter0', () async {
await driver.waitFor(find.text('0'));
await ozzie.takeScreenshot('initial_counter_is_0');
});
});
// 测试点击按钮后计数器是否增加到 1
test('点击按钮后计数器值为 1', () async {
await ozzie.profilePerformance('counter1', () async {
await driver.tap(find.byType('FloatingActionButton'));
await driver.waitFor(find.text('1'));
await ozzie.takeScreenshot('counter_is_1');
});
});
}
完成后,HTML 报告将生成在项目目录下的 ozzie/index.html
文件中:
使用 ozzie.yaml
控制性能阈值
您可以在项目的根目录下创建一个 ozzie.yaml
文件来控制性能测试的不同阈值。如果未定义此文件,则 Ozzie
将使用默认值。
示例 ozzie.yaml
文件
integration_test_expectations:
should_fail_build_on_warning: true
should_fail_build_on_error: true
performance_metrics:
missed_frames_threshold:
warning_percentage: 5.0
error_percentage: 10.0
frame_build_rate_threshold:
warning_time_in_millis: 14.0
error_time_in_millis: 16.0
frame_rasterizer_rate_threshold:
warning_time_in_millis: 14.0
error_time_in_millis: 16.0
可选屏幕截图
截取屏幕截图可能需要一些时间,有时您可能希望在运行集成测试时不进行截图以节省时间。可以通过设置 shouldTakeScreenshots
为 false
来跳过截图部分:
setUpAll(() async {
driver = await FlutterDriver.connect();
ozzie = Ozzie.initWith(
driver,
groupName: 'counter',
shouldTakeScreenshots: false,
);
});
许可证
版权所有 2018 Jorge Coca
根据Apache许可证2.0版("许可证")授权;
您不能在遵守许可证条款的情况下使用此文件。
您可以在以下地址获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件
按"原样"分发,不附带任何明示或暗示的保证或条件。
有关许可证具体语言的许可和限制,请参阅许可证。
示例应用
以下是一个简单的 Flutter 应用示例,用于演示 ozzie
的使用场景:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(primarySwatch: Colors.blue),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
[@override](/user/override)
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(
'你已经按下了按钮:',
),
new Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
],
),
),
floatingActionButton: new FloatingActionButton(
onPressed: _incrementCounter,
tooltip: '增加',
child: new Icon(Icons.add),
),
);
}
}
更多关于Flutter插件ozzie的使用方法介绍的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件ozzie的使用方法介绍的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
ozzie
是一个用于 Flutter 的测试和调试插件,它可以帮助开发者更轻松地进行 UI 测试和调试。虽然 ozzie
并不是 Flutter 官方推荐的插件,但它在某些场景下可以非常有用。以下是对 ozzie
插件的探索和使用指南。
1. 安装 ozzie
首先,你需要在 pubspec.yaml
文件中添加 ozzie
依赖:
dev_dependencies:
ozzie: ^0.1.0
然后运行 flutter pub get
来安装依赖。
2. 基本用法
ozzie
主要用于生成测试报告和截图。它可以帮助你在运行 UI 测试时自动生成截图,并将这些截图与测试结果一起保存。
2.1 配置 ozzie
在你的测试文件中,首先需要导入 ozzie
:
import 'package:ozzie/ozzie.dart';
然后,你可以在 setUp
方法中初始化 ozzie
:
void main() {
setUp(() {
Ozzie().configure(
screenshotDirectory: 'screenshots',
reportDirectory: 'test_reports',
);
});
// 你的测试代码
}
2.2 使用 ozzie
进行截图
在测试过程中,你可以使用 Ozzie
的 takeScreenshot
方法来截图:
testWidgets('MyWidget should display correctly', (WidgetTester tester) async {
await tester.pumpWidget(MyWidget());
// 截图并保存
await Ozzie().takeScreenshot('my_widget_screenshot');
// 你的断言
expect(find.text('Hello, World!'), findsOneWidget);
});
2.3 生成测试报告
在测试完成后,你可以调用 Ozzie
的 generateReport
方法来生成测试报告:
void main() {
setUp(() {
Ozzie().configure(
screenshotDirectory: 'screenshots',
reportDirectory: 'test_reports',
);
});
tearDownAll(() async {
await Ozzie().generateReport();
});
// 你的测试代码
}
3. 高级用法
ozzie
还支持一些高级功能,例如自定义报告格式、添加额外的元数据等。
3.1 自定义报告格式
你可以通过继承 OzzieReporter
类来自定义报告格式:
class CustomReporter extends OzzieReporter {
@override
Future<void> generateReport() async {
// 自定义报告生成逻辑
}
}
void main() {
setUp(() {
Ozzie().configure(
screenshotDirectory: 'screenshots',
reportDirectory: 'test_reports',
reporter: CustomReporter(),
);
});
// 你的测试代码
}
3.2 添加元数据
你可以在测试过程中添加额外的元数据,这些元数据会包含在生成的报告中:
testWidgets('MyWidget should display correctly', (WidgetTester tester) async {
await tester.pumpWidget(MyWidget());
// 添加元数据
Ozzie().addMetadata('test_name', 'MyWidget Test');
Ozzie().addMetadata('test_description', 'This test verifies that MyWidget displays correctly.');
// 截图并保存
await Ozzie().takeScreenshot('my_widget_screenshot');
// 你的断言
expect(find.text('Hello, World!'), findsOneWidget);
});