首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用integration_test软件包设置颤振综合测试的现场

用integration_test软件包设置颤振综合测试的现场
EN

Stack Overflow用户
提问于 2020-08-30 03:03:43
回答 1查看 274关注 0票数 5

我正在尝试使用在运行测试之前设置特定语言环境的integration_test包来编写一个测试。

代码语言:javascript
复制
    await tester.binding.setLocale('en', 'US');
    app.main();
    await tester.idle();
    await tester.pumpAndSettle();

    // The app is still using the default locale of the phone...

下面是我在驱动程序中的当前设置:

代码语言:javascript
复制
  // Some adb commands for granting permissions...
  print('Starting test.');
  final FlutterDriver driver = await FlutterDriver.connect();
  final String data = await driver.requestData(
    null,
    timeout: const Duration(minutes: 1),
  );
  await driver.close();
  // Some more adb commands to revoke permissions.

这似乎行不通。

我找到了this issue here,但它没有使用integration_test包,因此具有完全不同的设置。

EN

回答 1

Stack Overflow用户

发布于 2021-11-30 21:47:39

我能够通过将我的目标小部件包装在Localizations小部件中来本地化我的集成测试。类似于:

代码语言:javascript
复制
class WidgetTestWrapper extends StatelessWidget {
  const WidgetTestWrapper({
    Key? key,
    required this.locale,
    required this.child,
  }) : super(key: key);

  final Widget child;
  final Locale locale;

  static const localizationsDelegates = <LocalizationsDelegate>[
    S.delegate,
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate,
    GlobalCupertinoLocalizations.delegate,
  ];

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Material(
        child: Localizations(
          locale: locale,
          delegates: localizationsDelegates,
          child: child,
        ),
      ),
    );
  }
}

然后,我在对runApp的调用中传入测试所需的Locale

例如,对于西班牙语US (es-US):

代码语言:javascript
复制
runApp(WidgetTestWrapper(locale: const Locale('es', 'US'), child: widgetUnderTest));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63650780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档