3

如何在 Flutter 中的集成测试和小部件测试之间创建共享代码目录?可能会有很多,因为他们现在使用与新官方相同的 API

在 Android 本机中,您可以执行以下操作,以便在本地非仪器 UI 测试(引擎盖下的 Roboelectric)和使用 Espresso API 的仪器 Espresso 测试之间共享代码。当然还有各种各样的共享助手,模拟,等等。

我如何在 Flutter 中实现类似的目标?

 // This allows us to share classes between androidTest & test directories.
    android.sourceSets {
        test {
            java.srcDirs += "$projectDir/src/testShared"
        }
        androidTest {
            java.srcDirs += "$projectDir/src/testShared"
        }
    }
4

1 回答 1

0

这可以使用共享包(即test_base)来实现。

  1. 为您的测试代码创建一个包(避免混淆:您的代码将写入其lib文件夹中)。

跑:

flutter create --template=package test_base
  1. 将您的主包添加为依赖项,test_base以便您可以访问主包代码。

test_base/pubspec.yaml

dependencies:
  <your-package-name>:
    path: ../
  1. test_base作为开发依赖项添加到您的主库中。

./pubspec.yaml

dev_dependencies:
  test_base:
    path: test_base/

现在您可以在小部件/集成测试中导入test_base包。

注意:通过这种方式,您可以在没有编译错误的情况下test_base导入传递依赖项(主包的依赖项)的包。但是不鼓励在 dart 中显式导入未显式定义的依赖包,test_base/pubspec.yaml并且在未来的 dart 版本中可能会遇到linter或编译警告(目前是 2.13.4,没有警告)。这意味着您需要在test_base/pubspec.yaml. 虽然我认为是这种情况,但导入传递依赖包是无害的。

于 2021-08-23T11:56:12.740 回答