我可以在Flutter中使用一个配置文件运行多个集成测试吗?

时间:2019-05-21 10:45:47

标签: flutter automated-tests integration-testing

我正在尝试编写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)来启动两个测试。那有可能吗?

4 个答案:

答案 0 :(得分:3)

扩展到@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

答案 1 :(得分:2)

像 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

答案 2 :(得分:1)

是的,可以使用相同的“配置”运行多个“测试”文件。

在通俗易懂的行话中,您的配置文件是您的 target ,而您的测试文件是您的 driver 。您的目标始终是login.dart,但是您有两个驱动程序login_test.dartlogin_warning.dart

使用flutter drive命令,您可以指定targetdriver

因此,要运行两个驱动程序,只需执行以下命令

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驱动程序。

答案 3 :(得分:1)

您始终可以启动一个主测试文件,例如

flutter drive --target=test_driver/app_test.dart

然后将您的测试组称为函数,就像这样-

void main() {
  test1();
}
void test1() {
  group('test 1', () {});}

因此,使用一个命令,您将执行main()

中提到的所有情况