- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的 Flutter 应用程序设置一些集成测试,但遇到了一些麻烦。虽然在 Debug模式下运行我的应用程序工作正常,但当我尝试使用 flutter_driver 运行它时,应用程序保持黑色。
这是我的 flutter_driver/app.dart
代码:
import 'package:flutter_driver/driver_extension.dart';
import 'package:[MY_APP_NAME]/main.dart' as app;
void main() {
// This line enables the extension.
enableFlutterDriverExtension();
// Call the `main()` function of the app, or call `runApp` with
// any widget you are interested in testing.
app.main();
}
这是我的 flutter_driver/app_test.dart
文件的代码:
// Imports the Flutter Driver API.
import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';
void main() {
group('My first test group', () {
// First, define the Finders and use them to locate widgets from the
// test suite. Note: the Strings provided to the `byValueKey` method must
// be the same as the Strings we used for the Keys in step 1.
final welcomeQuestion = find.byValueKey('welcomeQuestion');
FlutterDriver driver;
// Connect to the Flutter driver before running any tests.
setUpAll(() async {
driver = await FlutterDriver.connect();
});
// Close the connection to the driver after the tests have completed.
tearDownAll(() async {
if (driver != null) {
driver.close();
}
});
test('check flutter driver health', () async {
Health health = await driver.checkHealth();
print(health.status);
});
test('Check welcomeQuestion', () async {
// Use the `driver.getText` method to verify the counter starts at 0.
expect(await driver.getText(welcomeQuestion), "Are you feeling good today?");
});
});
}
这是我在运行 flutterdrive --target=test_driver/app.dart
执行测试时收到的错误消息:
00:00 +1 -1: [APP-NAME] Check welcomeQuestion [E]
DriverError: Error in Flutter application: Uncaught extension error while executing get_text: 'package:flutter_driver/src/extension/extension.dart': Failed assertion: line 189 pos 14: 'WidgetsBinding.instance.isRootWidgetAttached || !command.require
sRootWidgetAttached': No root widget is attached; have you remembered to call runApp()?
#0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:40:39)
#1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
#2 FlutterDriverExtension.call (package:flutter_driver/src/extension/extension.dart:189:14)
<asynchronous suspension>
#3 BindingBase.registerServiceExtension.<anonymous closure> (package:flutter/src/foundation/binding.dart:512:32)
<asynchronous suspension>
#4 _runExtension (dart:developer-patch/developer.dart:84:23)
Original error: null
Original stack trace:
null
package:flutter_driver/src/driver/driver.dart 433:7 FlutterDriver._sendCommand
===== asynchronous gap ===========================
dart:async/future_impl.dart 22:43 _Completer.completeError
dart:async-patch/async_patch.dart 40:18 _AsyncAwaitCompleter.completeError
package:flutter_driver/src/driver/driver.dart FlutterDriver._sendCommand
===== asynchronous gap ===========================
dart:async/zone.dart 1053:19 _CustomZone.registerUnaryCallback
dart:async-patch/async_patch.dart 77:23 _asyncThenWrapperHelper
package:flutter_driver/src/driver/driver.dart FlutterDriver._sendCommand
package:flutter_driver/src/driver/driver.dart 677:41 FlutterDriver.getText
===== asynchronous gap ===========================
dart:async/zone.dart 1053:19 _CustomZone.registerUnaryCallback
dart:async-patch/async_patch.dart 77:23 _asyncThenWrapperHelper
package:test_api/src/backend/declarer.dart Declarer.test.<fn>.<fn>.<fn>
package:test_api/src/backend/invoker.dart 250:15 Invoker.waitForOutstandingCallbacks.<fn>
===== asynchronous gap ===========================
dart:async/zone.dart 1045:19 _CustomZone.registerCallback
dart:async/zone.dart 962:22 _CustomZone.bindCallbackGuarded
dart:async/timer.dart 52:45 new Timer
dart:async/timer.dart 87:9 Timer.run
dart:async/future.dart 174:11 new Future
package:test_api/src/backend/invoker.dart 399:21 Invoker._onRun.<fn>.<fn>.<fn>
00:00 +1 -1: [APP-NAME] (tearDownAll)
00:00 +1 -1: Some tests failed.
Unhandled exception:
Dummy exception to set exit code.
#0 _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:1112:29)
#1 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#3 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:391:30)
#4 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5)
#5 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
Stopping application instance.
Driver tests failed: 255
值得一提的是,应用程序屏幕保持黑色,因此驱动程序似乎无法连接到原始应用程序并正确运行它。有人知道如何解决这个问题吗?
运行flutter --version
:
Flutter 1.7.8+hotfix.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 20e59316b8 (8 weeks ago) • 2019-07-18 20:04:33 -0700
Engine • revision fee001c93f
Tools • Dart 2.4.0
这是我的 main.dart 的黑色版本:
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart';
[... + many additional imports from other private packages]
void main() async {
//load the json config globally
await Config().loadConfig();
await SharedPrefsService().init();
await RealmService().init();
SessionHistoryService().init();
final Router router = Router();
[... a lot of router.define() functions....]
//set statusbar color
FlutterStatusbarcolor.setStatusBarWhiteForeground(true);
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]).then((_) {
runApp(new MaterialApp(
localizationsDelegates: [
const AppLocalizationsDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate
],
supportedLocales: [
const Locale('en', 'US'), // English
const Locale('de', 'DE'), // German
// ... other locales the app supports
],
localeResolutionCallback:
(Locale locale, Iterable<Locale> supportedLocales) {
for (Locale supportedLocale in supportedLocales) {
if (supportedLocale.languageCode == locale.languageCode ||
supportedLocale.countryCode == locale.countryCode) {
//For Localization Testing:
// return const Locale('de', 'DE');
return supportedLocale;
}
}
return supportedLocales.first;
},
title: 'MY APP NAME',
home: SharedPrefsService().isFirstLaunch()
? FirstLaunchScreen(true)
: MainMenuPage(),
onGenerateRoute: router.generator));
});
}
最佳答案
就我而言,这已经足够了:
// connects with the current running application
driver = await FlutterDriver.connect();
// Wait for the first frame to be rasterized during the app launch.
await driver.waitUntilFirstFrameRasterized();
好吧,不知道为什么它被否决了,这是关于此的 gh 问题:https://github.com/flutter/flutter/issues/41029
更新:看来我们有一个新的库将取代 FlutterDriver,您将不再需要关心这些问题:https://medium.com/flutter/updates-on-flutter-testing-f54aa9f74c7e:)
关于Flutter:测试时 flutter_driver 错误消息和应用程序屏幕保持黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57861495/
我正在尝试从flutter应用程序构建apk,但出现此错误: Note: /mnt/Software/Linux/Flutter/flutter/.pub-cache/hosted/pub.dartl
我有一个名为 X 的较大应用程序,还有另一个名为 Y 的较小应用程序。他们现在彼此分开,并且工作正常。我想将应用程序 Y 集成到 X 中。我想将 Y 的代码放入 X 项目中,但它们应该有不同的 Mai
在android Studio中选择Create New Flutter Project,出现如下4个选项。 Flutter 应用程序 Flutter 插件 Flutter 包 flutter 模块
我看到我的 flutter 项目生成了一个文件 ios/Flutter/Flutter.podspec ,这个文件有什么用? 如果它与生成的 Flutter.framework 有关? 我应该将它包含
我尝试过的 在包含flutter SDK的位置添加/编辑.bash_profile.rtf文件。 导出PATH = / Users / temur / Documents / Projects / F
Flutter 日志会打印数千个详细/垃圾邮件日志。 我正在尝试调试一个复杂的应用程序,但是打印太冗长了,以至于我很难找到我自己打印的东西。 有没有办法禁用详细? 就像是: Logger.level.
在flutter 1.22更新之后,我在Lineargradient colors属性中遇到错误,这给我一个错误,即未定义名称colors参数。.在Android中更新flutter和flutter插
在下面的代码 widget.hintText 中给出错误,我试图将日期选择器作为单独的组件,并在从其他文件调用它时动态传递提示文本值。 import 'package:date_field/date_
在下面的代码 widget.hintText 中给出错误,我试图将日期选择器作为单独的组件,并在从其他文件调用它时动态传递提示文本值。 import 'package:date_field/date_
Flutter 1.0 发布后,我正在按照步骤搭建 Flutter 开发环境。 在步骤中(如所附屏幕截图所示),它说要更新 $PATH 两次,一次使用 flutter 工具的路径 export PAT
我有一个用 flutter 编写的移动应用程序,我想将其转换为 flutter_web 应用程序(集成 flutter_web 尚不可用)。我目前遇到包裹问题。 我已按照本网站中列出的说明进行操作 h
如何向我的 Flutter 路由添加自定义转换?这是我目前的路线结构。 class MyApp extends StatelessWidget { // This widget is the
我正在尝试通过 URL 在 webview 中显示网页。我试过 flutter_webview_plugin 插件,但是当我在浏览器上运行项目时它不起作用。 在 flutter web applica
我正在使用 animatedContainer 在按下按钮时显示 listView.builder()。这是一个要显示的简单子(monad)列表,但问题是我不知道 ListView 构建器的高度会传递
我目前正在我的应用程序中制作渐变背景动画......我正在使用 lottie 动画的帮助下这样做!我试图将它封装在一个容器中并成功地做到了。但是有一个问题,尽管我将高度更改为大于 2000 的东西,但
美好的一天! 我无法弄清楚如何使用 google 标签管理器设置 flutter。我找到了 this package包括标签管理器 api。但是我不知道如何正确配置它。 (在网络上我只需要复制粘贴一个
我的购物车模型如下 class Cart { String description; double unitCost; double amount; int quantity; S
在 Flutter 应用程序中,我想为在线托管的资源(图像、视频等)实现缓存。 我希望它能在原生平台 (Android/iOS)(例如使用文件系统)和网络(例如使用 IndexedDB)上运行。 Fl
我写了一个页面,在顶部一切都很好,应该是这样。在底部我有一个事件的历史。我的容器的宽度是自动确定的(取决于屏幕的宽度),而高度 - 不,在不同的设备上有不同的高度(底部的缩进是不同的)。是否可以自动确
我正在处理一个页面,其中有一些字段,例如 textfield 和 slider。在页面的末尾必须有一个用于进行下一步的按钮,该按钮被包裹在 Align 中以在页面之间具有固定位置。 另一方面,resi
我是一名优秀的程序员,十分优秀!