我可以 运行 在 Flutter 中使用一个配置文件进行多项集成测试吗?
Can I run multiple integration tests with one single config file in Flutter?
我正在尝试编写 Flutter 集成测试并 运行 使用一个配置文件而不是为每个测试都创建配置文件。有什么办法吗?
现在我有 login.dart 和 login_test.dart 等等,对于每个测试。我知道它的约定,即每个配置文件和测试文件必须具有相同的名称,但这不是我需要的,欢迎更多可配置的东西。提前致谢。
这是我的配置文件(login.dart)
import 'package:flutter_driver/driver_extension.dart';
import 'package:seve/main.dart' as app;
void main() {
enableFlutterDriverExtension();
app.main();
}
测试 (login_test.dart) 看起来像这样
import ...
FlutterDriver driver;
void main() {
setUpAll(() async {
driver = await FlutterDriver.connect();
});
tearDownAll(() async {
if (driver != null) {
driver.close();
}
});
test('T001loginAsDriverAndVerifyThatDriverIsLogedInTest', () async {
some_code...
});
});
现在我想制作新的测试文件(例如 login_warning.dart)并能够通过调用单个配置文件(login.dart)来启动这两个测试。这可能吗?
是的,运行使用相同 "config" 的多个 "test" 文件是可能的。
用 flutter 术语来说,您的配置文件是您的 目标 ,您的测试文件是您的 驱动程序 。您的目标始终是 login.dart
但您有两个驱动程序 login_test.dart
和 login_warning.dart
.
使用 flutter drive
命令,您可以指定 target
以及 driver
。
所以为了运行两个驱动,只需执行以下命令
flutter drive --target=test_driver/login.dart --driver=test_driver/login_test.dart
flutter drive --target=test_driver/login.dart --driver=test_driver/login_warning.dart
这首先执行 login_test.dart
然后 login_warning.dart
驱动程序。
您始终可以拥有一个您启动的主要测试文件,比如
flutter drive --target=test_driver/app_test.dart
然后在其中调用您的测试组作为函数,就像这样 -
void main() {
test1();
}
void test1() {
group('test 1', () {});}
所以用一个命令你就可以执行main()
中提到的所有情况
展开@sceee 的回答:
例如,您可以将多个命令放入名为 integration_tests.sh
的 shell 脚本中,然后 运行 使用单个命令将它们放入。
#!/bin/sh
flutter drive --target=test_driver/app.dart --driver=test_driver/app_test.dart
flutter drive --target=test_driver/app.dart --driver=test_driver/start_screen_test.dar
使可执行:
$chmod a+rx integration_tests.sh
运行它:
$./integration_tests.sh
就像 vzurd 的回答一样,我最喜欢和最干净的是创建一个测试文件并从中调用所有主要方法:
import './first_test.dart' as first;
import './second_test.dart' as second;
void main() {
first.main();
second.main();
}
然后 运行 单个测试文件上的驱动程序:
flutter drive --driver=test/integration/integration_test_driver.dart --target=test/integration/run_all_test.dart
我正在尝试编写 Flutter 集成测试并 运行 使用一个配置文件而不是为每个测试都创建配置文件。有什么办法吗?
现在我有 login.dart 和 login_test.dart 等等,对于每个测试。我知道它的约定,即每个配置文件和测试文件必须具有相同的名称,但这不是我需要的,欢迎更多可配置的东西。提前致谢。
这是我的配置文件(login.dart)
import 'package:flutter_driver/driver_extension.dart';
import 'package:seve/main.dart' as app;
void main() {
enableFlutterDriverExtension();
app.main();
}
测试 (login_test.dart) 看起来像这样
import ...
FlutterDriver driver;
void main() {
setUpAll(() async {
driver = await FlutterDriver.connect();
});
tearDownAll(() async {
if (driver != null) {
driver.close();
}
});
test('T001loginAsDriverAndVerifyThatDriverIsLogedInTest', () async {
some_code...
});
});
现在我想制作新的测试文件(例如 login_warning.dart)并能够通过调用单个配置文件(login.dart)来启动这两个测试。这可能吗?
是的,运行使用相同 "config" 的多个 "test" 文件是可能的。
用 flutter 术语来说,您的配置文件是您的 目标 ,您的测试文件是您的 驱动程序 。您的目标始终是 login.dart
但您有两个驱动程序 login_test.dart
和 login_warning.dart
.
使用 flutter drive
命令,您可以指定 target
以及 driver
。
所以为了运行两个驱动,只需执行以下命令
flutter drive --target=test_driver/login.dart --driver=test_driver/login_test.dart
flutter drive --target=test_driver/login.dart --driver=test_driver/login_warning.dart
这首先执行 login_test.dart
然后 login_warning.dart
驱动程序。
您始终可以拥有一个您启动的主要测试文件,比如
flutter drive --target=test_driver/app_test.dart
然后在其中调用您的测试组作为函数,就像这样 -
void main() {
test1();
}
void test1() {
group('test 1', () {});}
所以用一个命令你就可以执行main()
展开@sceee 的回答:
例如,您可以将多个命令放入名为 integration_tests.sh
的 shell 脚本中,然后 运行 使用单个命令将它们放入。
#!/bin/sh
flutter drive --target=test_driver/app.dart --driver=test_driver/app_test.dart
flutter drive --target=test_driver/app.dart --driver=test_driver/start_screen_test.dar
使可执行:
$chmod a+rx integration_tests.sh
运行它:
$./integration_tests.sh
就像 vzurd 的回答一样,我最喜欢和最干净的是创建一个测试文件并从中调用所有主要方法:
import './first_test.dart' as first;
import './second_test.dart' as second;
void main() {
first.main();
second.main();
}
然后 运行 单个测试文件上的驱动程序:
flutter drive --driver=test/integration/integration_test_driver.dart --target=test/integration/run_all_test.dart