Как создать общий каталог для обмена кодом между интеграционными тестами и тестами виджетов?
Как создать каталог общего кода между тестами интеграции и тестами виджетов во флаттере? Их может быть совсем немного, так как теперь они используют тот же API, что и новый официальный
в собственном Android вы можете сделать следующее, чтобы иметь код, который используется совместно локальными неинструментированными UI-тестами (Roboelectric под капотом) и инструментальными тестами Espresso с Espresso API. И, конечно же, разные общие помощники, mocks, что угодно.
Как достичь аналогичной цели во 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"
}
}
1 ответ
Это может быть достигнуто с помощью общего пакета (а именно).
- Создайте пакет для своих тестовых кодов (во избежание путаницы: ваш код будет записан в папке lib ).
запустить:
flutter create --template=package test_base
- Добавьте свой основной пакет в качестве зависимости, чтобы у вас был доступ к кодам основного пакета.
test_base / pubspec.yaml:
dependencies:
<your-package-name>:
path: ../
- Добавьте в свою основную библиотеку как dev-dependency.
./pubspec.yaml:
dev_dependencies:
test_base:
path: test_base/
Теперь вы можете импортировать пакет в свой виджет / тесты интеграции .
Примечание: таким образом внутри
test_base
вы можете импортировать пакеты транзитивных зависимостей (зависимости вашего основного пакета) без ошибки компиляции. Но в dart не рекомендуется явно импортировать пакеты зависимостей, которые вы явно не определяете, и, вероятно, столкнутся с предупреждениями линтера или компиляции в будущих версиях dart (в настоящее время это 2.13.4 и никаких предупреждений). Это означает, что вам нужно явно определить эти зависимости в
test_base/pubspec.yaml
. Хотя я думаю, что это так, было бы безвредно импортировать пакеты транзитивных зависимостей.