小编Tho*_*mas的帖子

如何使用 testWidgets 测试 Widget 的动态颜色

我想为自定义小部件编写单元测试,特别是检查Text基于BuildContext. 我如何基于 测试不同的样式BuildContext

要测试的小部件:

class ThemedText extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final TextStyle inheritedTextStyle = Theme.of(context).textTheme.subtitle;
    Color customColor = inheritedTextStyle.color;
    if (inheritedTextStyle.color == Colors.blue) {
      customColor = Colors.red;
    }

    return Text(
      'Themed',
      style: inheritedTextStyle.copyWith(color: customColor),
    );
  }
} 
Run Code Online (Sandbox Code Playgroud)

我想写两个测试:

  • 提供一个继承TextStyle的颜色为Colors.blue,并测试Text小部件是否使用覆盖颜色(即Colors.blue)呈现。
  • 提供一个继承TextStyle的颜色不是Colors.blue(例如Colors.green),并测试Text小部件是否使用继承的颜色(例如Colors.green)呈现。

testing themes widget flutter

6
推荐指数
1
解决办法
714
查看次数

Flutter:Android Studio中的内联测试范围

我正在使用Android Studio 3.3.1(在Window和Ubuntu上)在Flutter中开发一个开源Android应用程序。来源可在Github上找到

该项目有一个生成覆盖率数据的测试文件,可以使用Coveralls之类的工具进行查看。这向我表明LCOV数据包含有意义的数据。

我想使用内联代码覆盖率查看,类似于其他Jetbrains工具。“ Flutter Test”类别下的运行配置可以正确识别我的测试,并能够正确运行它们。

但是,“覆盖运行”选项被禁用。我尝试了其他运行配置,例如Android JUnit,但无济于事。

我知道我可以手动创建coverage数据,但是我的目标是自动生成coverage数据,并以内联方式显示Coverage(就像Coveralls一样)。

有人知道什么运行配置(如果有)可以实现此目标吗?

附带说明一下,我最近将Codemagic用作CI工具,因此Coveralls上的coverage数据已经过时,但是LCOV数据有意义的观点仍然成立。我也在Intellij中尝试了类似的设置,但结果与Android Studio相同。

android code-coverage flutter

5
推荐指数
1
解决办法
494
查看次数

Dart:如何为抽象类创建最终成员接口

我想强制一个类User实现抽象类中的静态成员Base。这是可能的,还是我错误地使用了抽象继承范例?

如果没有继承,User可以简单地实现自己的静态成员而不覆盖Base,但我希望我的 linter 在类没有实现某些静态成员时抛出警告。

什么有效(不强制执行接口)

Base我们可以在和中隐式使用相同的接口User

abstract class Base {
  // This member could simply be removed and the snippet would still compile.
  static final String routeName = '/base';
}

class User extends Base {
  static final String routeName = '/base/user';
}
Run Code Online (Sandbox Code Playgroud)

如果我们要创建一个Person也扩展的新类Base,我们没有特定的实现要求。理想情况下,我想强制Person拥有一个静态成员routeName

class Person extends Base {
  // No warning about a missing static member 'routeName'.
}
Run Code Online (Sandbox Code Playgroud)

想法示例(无法编译)

Base …

inheritance interface dart

5
推荐指数
1
解决办法
972
查看次数