- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将 Room 数据库写入我的 getFilesDir() 文件夹。 (将数据库写入可移动 SD 卡显然需要一些重大研究!)
当我手动运行我的应用程序时,我想写一些记录并将它们保留在数据库中,因此我不需要再次编写它们。当我运行测试时,我将数据库名称从“*.dat”切换到“_test.dat”(想想 Ruby on Rails 或 Django 的“环境”系统)。测试可以免费删除记录。
当我手动镊子 Android Studio 中的每个测试来运行它时,这个系统就起作用了。但是当我批量运行所有内容时,在 gradlew
,有些东西会删除数据库的“*.dat”版本。这意味着我必须不断地手动重新填充数据库,每次我手动测试。
里面有什么gradlew
正在删除我的 getFilesDir() 文件夹的内容吗?以及如何(不知道如何使用“外部”存储),我能打败它吗?
可应要求提供代码示例,但这只是通用内容。切换到 getExternalFilesDir() 不能解决问题。 StackOverflow 说试试 ./gradlew test connectedAndroidTest -x uninstallAndroidTest
,但没有 uninstallAndroidTest
任务。
顶级build.gradle
:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
tasks.withType(Test) {
testLogging {
exceptionFormat "full"
events "started", "skipped", "passed", "failed"
showStandardStreams true
}
}
app/build.gradle
:
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.allflat.planarinfinity"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// packagingOptions {
// exclude 'META-INF/DEPENDENCIES'
// exclude 'META-INF/LICENSE'
// exclude 'META-INF/LICENSE.txt'
// exclude 'META-INF/license.txt'
// exclude 'META-INF/NOTICE'
// exclude 'META-INF/NOTICE.txt'
// exclude 'META-INF/notice.txt'
// exclude 'META-INF/ASL2.0'
// exclude 'META-INF/INDEX.LIST'
// }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
testImplementation 'junit:junit:4.12'
// testImplementation 'org.mockito:mockito-core:2.19.0'
testImplementation 'androidx.arch.core:core-testing:2.1.0'
androidTestImplementation 'org.powermock:powermock-core:2.0.2'
androidTestImplementation 'org.powermock:powermock-module-junit4:2.0.2'
androidTestImplementation 'org.powermock:powermock-api-easymock:2.0.2'
androidTestImplementation 'androidx.test:core:1.2.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.2-alpha02'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha02'
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
// androidTestImplementation 'androidx.test.platform.app:'
implementation 'androidx.room:room-runtime:2.2.0'
annotationProcessor 'androidx.room:room-compiler:2.2.0'
testImplementation 'androidx.test:core:1.2.0'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'org.easymock:easymock:4.0.2'
// androidTestImplementation 'org.mockito:mockito-core:2.19.0'
}
最佳答案
根据这里的获奖作品...
Run connectedAndroidTest and skip uninstall
...答案是写一个Rakefile
包含:
task default: [ :unit_test_and_install, :espresso_test ]
task :unit_test_and_install do
sh './gradlew --console=verbose test installDebug installDebugAndroidTest'
end
devices = `adb devices`
serial_numbers = devices.split("\n")[1..-1].map{|q| q.split("\t")[0] }
task :espresso_test do
threads = serial_numbers.map do |sn|
Thread.new do
sh "adb -s #{sn} shell am instrument -w -r -e package com.mycorp.myapp -e disableAnalytics true " +
"com.mycorp.myapp.test/androidx.test.runner.AndroidJUnitRunner | tee #{sn}.txt"
end
end
threads.each &:join
serial_numbers.each do |sn|
grop = `grep "^OK .*tests" #{sn}.txt`
if grop == ''
sh "cat #{sn}.txt"
abort 'FAILURES on ' + sn
end
end
end
$ rake
.所有测试都在运行,而我的手动测试数据和配置都保留下来。
Rakefile
,不是
Makefile
,因为我们需要处理输出并查找错误以成功向环境返回 0 或 1。但是
adb etc
不符合“测试错误是语法错误”的规则,并且在错误时不会传播正确的退出值。我希望我的命令行异常终止而不是提交损坏的代码,所以我们将测试输出存储到 SERIALNUMBER.txt 文件中,然后
grep
他们。
$ rake && git commit -am 'the same comment every time' && git push
.如果有任何错误,它们会显示在控制台上,并且
git commit
不会发生。
Makefile
-style 处理,因为如果任何命令失败,我们需要停止处理,遵循“测试错误是语法错误”的规则。
error: more than one device/emulator
,这完全是假的,因为
./gradlew test connectedAndroidTest
自然可以在所有设备上正常工作...这就是
Rakefile
的原因必须找到所有设备然后调度
adb shell -s
给每一个。
Rakefile
调用
gradlew
这里: [__]。
关于android-espresso - ./gradlew test connectedAndroidTest 删除我的 getFilesDir() 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57433975/
我是 Gradle 新手,正在阅读此处的 Spring 教程: http://spring.io/guides/gs/gradle/ 我到达了它告诉我添加此任务的部分: task wrapper(ty
我在我的 react-native 项目的 gradlew clear 文件夹中错误地写了 gradlew clean 而不是 android,我发现它做了一些认真的工作。那么这是在做什么, grad
我注意到了 ./gradlew tasks 对于我的 android 项目,给我 assemble* 和 compile* 任务。 有什么区别? 我还注意到该命令列出了任务 compileDemoDe
我正在 salve 机器上设置 Jenkins 作业,我是 Linux shell 的新手。现在我有一个问题: 以 jenkins(为 Jenkins 作业设置的用户帐户)登录,执行 ./gradle
我想在 gradle 的帮助下从命令行构建 apk。我应该使用哪个命令来构建仅发布版本的 apk? 最佳答案 调试 ./gradlew 发布 ./gradlew assembleRelease 你的
我正在尝试 bundle 我的 APK。当我使用 gradlew assembleRelease或 assembleReleaseStaging我的应用程序没有变化。当我使用 react-native
根据 this以及我看过的许多其他地方/论坛,我应该始终在我的 git/svn/cvs 中包含 gradle 包装文件。 但是,为什么?在我的 build.gradle 文件中,我已经明确包含了我希望
我有以下情况: 我有一个包含几个子项目的项目。今天我尝试通过命令行使用 gradle 构建项目。 执行 ./gradlew clean :build 时构建成功, 但不是 ./gradlew clea
一个疯狂的问题,当我运行 gradlew assembleRelease 时,错误信息是: ... Loading dependency graph, done.easeJsAndAssets war
我尝试从命令行运行 gradlew,但经常遇到以下错误。 Brendas-MacBook-Pro:appx_android brendalogy$ ./gradlew compileDebug --s
我有一个来自 Gaelyk(称为 Bloogie)的示例,它使用 gradlew。 我在代理后面。 我阅读了 gradle 文档并发现了这个: gradle.properties systemProp
我有一个gradle项目。 当我输入“gradlew 任务”时,我会看到一堆任务。 这些任务在哪里?我如何查看它们的定义位置? 最佳答案 gradle help --task 将为您提供有关给定任务
我正在使用 Minecraft Forge 进行 retrofit 。对于那些不知道 Forge 是什么的人来说,它是一个防止模组破坏 Minecraft 源代码并帮助模组共存的程序。它还包含一个开发
我已经设置了 build.gradle文件与 apply plugin: 'java' .我尝试使用说明设置 gradle 包装器 here ,但是当我输入 sudo ./gradlew build
我从 git 加载一个项目并在 MacBook 上成功构建它。当我在终端窗口中输入 './gradlew assembleRelease' 时,出现错误: bash: ./gradlew: No su
我运行./gradlew clean是因为我的flutter运行assembleDebug过程花费了意想不到的长时间。我希望它删除我的文件夹,但相反,它开始下载gradle。Downloading h
当我尝试使用 ./gradlew clean 清理我的项目时它有效,但是./gradlew build不会工作。我尝试了一些存储库,但它无法解决 Spring 依赖项。 这里是 build.gradl
我正在尝试构建libGDX项目,但是gradlew刚刚停止工作。两个月前,它运行良好。似乎更新Java破坏了它。这是发生了什么: 这是Java文件夹的内容(不知道为什么会有用): 最佳答案 您的JAV
我正面临这个问题 sparsh610@DESKTOP-551C51M:/mnt/e/xxxxxxxxx$ ./gradlew mm : not found2: ./gradlew: : not fou
我已经设置了 build.gradle 文件,目前我的项目运行良好。现在的问题是当我运行 ./gradlew run 时,它失败并显示错误: What went wrong: Execution fa
我是一名优秀的程序员,十分优秀!