美好的一天! 我有一个抖动测试项目,我想为其编写单元测试。但是我不知道该怎么做。 点击屏幕上的更改背景颜色。 我想要一些提示,如果可能的话,请看下面的代码:
import 'package:flutter/material.dart';
import 'dart:math';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Home(),
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
Color randomColor;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
setState(() {
randomColor = Color((Random().nextDouble() * 0xFFFFFF).toInt())
.withOpacity(1.0);
});
},
child: Scaffold(
backgroundColor: randomColor,
body: Container(
child: Center(
child: Text('Hey, there'),
),
)),
);
}
}
答案 0 :(得分:1)
Flutter 内置了一个测试包。我们只需要在我们编写测试脚本的 dart 文件中导入 import 'package:test/test.dart';
。还要在 test
文件中添加 pubspec.yaml
包。
一个很好的资源是 Flutter documentation,如果您完全不熟悉 Flutter 测试,请继续学习。
谈到您的问题,绝对不可能在点击时测试和验证背景颜色,因为它是随机生成的,但当然您可以为上述 dart 代码添加一个简单的单元测试,以查找并匹配 Text 小部件是否显示。这是针对这种情况的测试代码。
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
/// Creating a new Flutter-Widget-test
testWidgets('Simple Flutter Test Example', (WidgetTester tester) async {
/// Pumping the widget to the screen [build and rendering]
await tester.pumpWidget(myApp());
/// Set finders
var textFinder = find.text('Hey, there');
/// Set matchers
expect(textFinder, findsOneWidget);
});
}
这更像是 Flutter 中的小部件测试,而不是单元测试。有关小部件测试及其方法的更多详细信息,请参阅 introduction、widget finders、tap and drag events 上的文档。