使用package:flutter_test,我可以创建一个查找器,通过键查找小部件:
expect(find.byKey(const ValueKey('counter')), findsOneWidget);
Run Code Online (Sandbox Code Playgroud)
或通过文字:
expect(find.text('0'), findsOneWidget);
Run Code Online (Sandbox Code Playgroud)
我还可以找到从此小部件衍生的小部件:
expect(
find.descendant(
of: find.byKey(const ValueKey('counter')),
matching: find.text('0'),
),
findsNothing,
);
Run Code Online (Sandbox Code Playgroud)
或者祖先:
expect(
find.ancestor(
of: find.text('0'),
matching: find.byKey(const ValueKey('counter')),
),
findsNothing,
);
Run Code Online (Sandbox Code Playgroud)
但是我如何组合这些查找器来验证是否存在带有“计数器”键且文本为“0”的小部件?例如:
Text(
'$_counter',
key: const Key('counter'),
style: Theme.of(context).textTheme.headline4,
),
Run Code Online (Sandbox Code Playgroud) 颤动集成测试中有什么方法可以保持等待,直到小部件完全加载吗?
就像在启动画面完成后等待主页加载一样?
我有一套针对 Flutter 应用程序的集成测试。我想使用 VS Code 测试选项卡运行它们,以便我可以轻松查看有关哪些测试通过/失败的信息等。
在我们实现flavor之前,这工作得很好。现在,口味已在 launch.json 中定义,运行测试需要 --flavor 参数,但我似乎无法在 UI 中设置它。
如果我尝试使用 VS Code 中的“测试”选项卡在 iOS 上运行它们,则会收到以下错误:
The Xcode project defines schemes: dev, prod, qa Exception: You must specify a --flavor option to select one of the available schemes.
我可以运行flutter test integration_test --flavor dev,但终端充满了日志,很难找出哪些测试失败以及原因。
visual-studio-code flutter flutter-test flutter-integration-test
我正在为我的一个 flutter-web 应用程序开发一些集成测试。我想考虑从上到下的方法,在下面的小部件层次结构树中专门定位容器(宽度:50,高度:50)。ParentWidget --> 行 --> 文本、SizedBox、行 --> Container()、Container(宽度:50,高度:50)、Container()。 注:不带按键方法
我尝试使用 ParentWidget --> Row --> Row --> with index 的后代进行定位,尝试选择第二个容器,但这不起作用,它失败并出现错误"Bad state: No element"。
import 'package:flutter/material.dart';
class ParentWidget extends StatelessWidget {
const ParentWidget({Key? key});
@override
Widget build(BuildContext context) {
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("Hello World..!!"),
SizedBox(
width: 20,
),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Container(
width: 20,
height: 20,
color: Colors.red,
),
Container(
width: 50,
height: 50,
color: Colors.red,
),
Container(
width: 20,
height: 20, …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的 Flutter 应用程序编写集成测试,我不想为每个测试一遍又一遍地调用 app.main() 方法,在 flutter 中调用单个 app.main() ;如何使用方法运行所有测试?
group('Test', () {
testWidgets('Test 1', (tester) async {
app.main();
}
testWidgets('Test 2', (tester) async {
app.main();
}
}Run Code Online (Sandbox Code Playgroud)
在集成测试期间是否有任何方法可以监视或保存或读取 print() 语句打印到控制台的任何内容。我正在用于integration_test测试。
在为 flutter 应用程序创建集成测试时,如何dart-define通过 gradle 脚本传递变量。
从Flutter文档来看,为了构建一个仪器测试apk(然后将其上传到Firebase测试实验室并进行测试),我们需要直接使用gradlew这样的命令:
pushd android
flutter build apk
./gradlew app:assembleAndroidTest
./gradlew app:assembleDebug -Ptarget=integration_test/<name>_test.dart
popd
Run Code Online (Sandbox Code Playgroud)
这里没有指定如何将--dart-define我们正在使用的标志内容从 flutter 端传递flutter run到gradlew命令。
我已经按照此处的定义在我的项目上设置了 Flutter 集成测试:https : //flutter.dev/docs/testing/integration-tests
我使用了以下 devDepencendies:
integration_test: ^1.0.0
flutter_test:
sdk: flutter
flutter_driver:
sdk: flutter
Run Code Online (Sandbox Code Playgroud)
测试驱动程序只是来自项目页面的 C&P:
import 'package:integration_test/integration_test_driver.dart';
Future<void> main() => integrationDriver();
Run Code Online (Sandbox Code Playgroud)
最终测试:
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
testWidgets('CPCSA-TC-016: Vehicle Card with no alert',
(WidgetTester tester) async {
app.main();
// Execute test code.
});
}
Run Code Online (Sandbox Code Playgroud)
最后我运行我的测试
flutter drive --driver=test_driver/integration_test.dart --target=integration_test/test.dart
这基本上没问题,但它在每次执行时都会编译,这非常耗时。我是否有机会运行集成测试并拥有与常规开发相同的热重载功能?如何实现这一目标?
或者还有其他解决方法吗?我正在考虑首先将测试代码编写为单元/小部件测试,然后在执行正确后将其移植到集成测试中。
integration-testing flutter hot-reload flutterdriver flutter-integration-test
我为每个屏幕都有一个单独的集成测试文件,我想使用 \xe2\x80\x9cfluttertests\xe2\x80\x9d 等单个命令运行所有集成测试。我查看了文档,但找不到任何方法来做到这一点。这也会导致 firebase 测试实验室 apk 出现问题。要创建 Android 测试 apk,我只能指定单个测试文件路径来创建 apk。
\n// flutter build generates files in android/ for building the app\nflutter build apk\n./gradlew app:assembleAndroidTest\n./gradlew app:assembleDebug -Ptarget=integration_test/whattodo_tests.dart\nRun Code Online (Sandbox Code Playgroud)\n目前,我找到了两种解决方法。
\n有谁能够解决这个问题或有更好的解决方案吗?
\ntesting integration-testing flutter firebase-test-lab flutter-integration-test
测试在调试模式下通过,但在配置文件或发布模式下未通过。enterText即使输入具有焦点,它在调用时也不会输入文本。在调试模式下,它可以毫无问题地输入文本。
testing integration-testing dart flutter flutter-integration-test