- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Android 仪器测试需要修改/清除应用程序数据,因此我希望它们使用单独的 applicationId,以便将私有(private)数据目录和共享首选项等内容分开。
在 Android documentation, I read the following :
By default, the build tools apply an application ID to your instrumentation test APK using the application ID for the given build variant, appended with
.test
. For example, a test APK for thecom.example.myapp.free
build variant has the application IDcom.example.myapp.free.test
.Although it shouldn't be necessary, you can change the application ID by defining the
testApplicationId
property in yourdefaultConfig
orproductFlavor
block.
build.gradle
:
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "ch.dbrgn.myapplication"
testApplicationId "ch.dbrgn.myapplication.test"
minSdkVersion 21
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'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
如您所见,我明确设置了
testApplicationId
至
ch.dbrgn.myapplication.test
.
package ch.dbrgn.myapplication;
import android.content.Context;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertEquals;
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void packageName() {
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("ch.dbrgn.myapplication", appContext.getPackageName());
}
@Test
public void applicationId() {
assertEquals("ch.dbrgn.myapplication.test", BuildConfig.APPLICATION_ID);
}
}
包不应该有
.test
后缀,但应用程序 ID 应该。
ch.dbrgn.myapplication.ExampleInstrumentedTest > applicationId[MI 6 - 10] FAILED
org.junit.ComparisonFailure: expected:<....dbrgn.myapplication[.test]> but was:<....dbrgn.myapplication[]>
at org.junit.Assert.assertEquals(Assert.java:115)
如何确保我的仪器测试在具有自己完全独立数据的单独应用程序中运行?
最佳答案
所以从 this answer ,您可以看到,实际上当您进行仪器测试时,会安装 2 个应用程序,一个进行仪器测试,然后是您的被测应用程序。
这个testApplicationId
不是指被测应用程序的应用程序 ID,而是指执行检测的应用程序的应用程序 ID。 (如果你想访问它,你必须使用 ch.dbrgn.myapplication
.test
.BuildConfig.APPLICATION_ID
,但这对你没有帮助)。
因此,要在进行仪器测试时为被测应用程序提供单独的应用程序 ID,您必须手动定义一个额外的 buildType 并指定另一个 applicationId
在那里,然后将其用于测试。例如:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
releaseUnderTest {
initWith buildTypes.release
applicationId "ch.dbrgn.myapplication.undertest"
}
}
关于Android:用于仪器测试的不同 applicationId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63674186/
检测 C# 代码的最简单方法是什么?我所说的检测是指插入我自己的代码片段以在执行期间收集一些动态信息。 例如(星号代表一些不重要的代码): for (int i=0; i。通过捕获方法调用,我的意思是
我有一个 javaagent,它可以打印出所有已加载类的名称及其来源(它们来自哪里)。 public byte[] transform(ClassLoader loader, String class
我可以使用命令行为单个设备/模拟器运行仪器,但我需要在两个设备上运行它。手动我可以通过打开 Instruments 的两个新窗口并制作两个 js 副本并导入它来实现这一点。但我需要使用命令行来实现这一
Closed. This question needs details or clarity。它当前不接受答案。
在 xcode 工具中测试我的 IOS 应用程序时,我有几次内存泄漏。谁能看出标有“-->”的行为什么会泄漏? --> CLLocationCoordinate2D newCoord = CLLoca
我正在尝试分析我的应用程序并想检查内存泄漏。我打算使用 Xcode 仪器。任何人都建议从 Xcode 仪器开始的好教程。请提出任何替代方案。 最佳答案 这里是教程列表,其中一些是文本文档和视频 关于仪
我正在我的 iOS 设备上运行应用程序,但在 Instruments 中,该设备显示为灰色。 这也意味着我无法附加流程 ( Cant launch iOS app with Instruments o
我正在使用工具“分配”来监视应用程序的内存。虚拟机跟踪器的统计数据让我很困惑。为什么有这么多脏内存(对于我的应用程序,达到32M),我用谷歌搜索了一下,知道当应用程序在后台模式下收到内存警告时,应该首
我正在关注 Ray Wenderlich tutorial for instruments ,但我不知道为什么分析没有显示泄漏的对象? - (void)tableView:(UITableView *
我目前正在开发一款 tvOS 应用。这是我的第一个原生 (Swift) 应用程序。该应用程序将是一个数字标牌应用程序,在事件期间或公司办公室使用。与 iOS/tvOS 上的典型应用程序相比,一个很大的
我正在应用程序上运行仪器。根据仪器,未检测到任何泄漏。 但是,类别CFString (store) 一直在上升。有谁知道 CFString (store) 是什么? 这是否意味着我有泄漏? 最佳答案
如何从命令行为 iOS 自动化 (iPhone/iPad) 运行 apple instruments?我看到一些博客说下面的命令 instruments -w -t /Developer/Platfo
当我从 SVN 检查测试脚本时(提交的文件我的 friend ),我不知道为什么脚本不可编辑,播放脚本和停止脚本选项被禁用并且记录不是一切都在发生。 当我创建一个新的自动化项目并导入相同的项目时脚本文
我的应用程序构建仅在运行仪器时崩溃。重现情况是 100%,但在没有仪器的情况下运行发布版本或运行调试版本时不会崩溃。当 Instruments 运行发布版本时,我无法单步执行并找出崩溃的确切原因。当构
在以前版本的 Instruments 中,我没有遇到任何问题,但现在(v6.2)由于某种原因,Allocations 不会列出我的应用程序的任何对象。我试过调试和 Release模式: 请注意,过滤器
我在我的 View Controller 上什么也没做,我看到了应用程序运行时正在变化的图表。 这真的是泄漏吗? 第一次显示绿色复选标记,然后显示 1 次泄漏,然后没有新的泄漏。 所以这意味着没有泄漏
我有一个 Android 项目(由 Cordova 生成),我想向其添加(检测)测试。它只有一个应该测试的 MainActivity.java。 通常这意味着向 build.gradle 添加一些依赖
我有内存问题(我正在使用 ARC),我确定我在应该是 weakstrong @property。我运行仪器,它向我展示了这个分配: 这显然是一个不发布的问题。但是我可以在 Instruments 中找
我正在使用时间分析器分析我的 WatchKit 扩展应用程序,但轨迹是未符号化的: 我的意思是这些对我来说都是无关的符号,我找不到我的方法名称。如果我点击这些符号中的任何一个,我就可以看到汇编代码。如
我正在使用仪器来分析我正在开发的 iPhone 应用程序中的内存使用情况。我想知道,什么是合理的内存分配大小? 当我获得关于我的目标的信息时,我是否应该选中忽略“NS”、“CF”和“Malloc”前缀
我是一名优秀的程序员,十分优秀!