首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在android单元测试中模拟资源类来获得scaledDensity?

在Android单元测试中,要模拟资源类来获得scaledDensity,可以使用Android Testing Support Library中的InstrumentationRegistry和MockResources来实现。

首先,需要在测试类的setUp()方法中初始化InstrumentationRegistry和MockResources。具体代码如下:

代码语言:java
复制
import android.content.res.Resources;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.test.mock.MockResources;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class MyUnitTest {

    private Resources resources;

    @Before
    public void setUp() {
        resources = new MockResources();
        InstrumentationRegistry.getTargetContext().setResources(resources);
    }

    @Test
    public void testScaledDensity() {
        // 在这里进行测试逻辑,可以通过resources获取scaledDensity
    }
}

然后,在测试方法中,可以通过resources对象来获取scaledDensity。具体代码如下:

代码语言:java
复制
@Test
public void testScaledDensity() {
    float scaledDensity = resources.getDisplayMetrics().scaledDensity;
    // 进行断言或其他测试逻辑
}

这样,就可以在Android单元测试中模拟资源类来获得scaledDensity了。

推荐的腾讯云相关产品和产品介绍链接地址:

请注意,以上答案仅供参考,具体实现方式可能因项目需求和环境而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android全面的屏幕适配方案解析(四)__今日头条适配方案

通过源码可以知道,dp转换最终都是调用系统工具Typedvalue的applyDimension方法进行转换的: /** * @param unit 要转换的单位...的成员变量,如图所示: 而DisplayMetrics实例可以通过系统资源文件Resources的getDisplayMetrics方法获得,系统资源文件Resouces也可以通过Activity...今日头条适配的最终方案: 这里是以设计图总宽度360dp适配,接下来只需要把我们计算好的 density 在系统修改下即可,代码实现如下: /** * 今日头条适配方案...和density的比获得scaledDensity值 float targetScaleDensity = targetDensity * (sNoncompatScaledDensity...和density的比获得scaledDensity值 float targetScaleDensity = targetDensity * (sNoncompatScaledDensity

1.4K50

如何让一套代码完美适配各种屏幕?

在最后项目运行时,会根据不同设备加载不同目录下的xml资源,即Pad会加载layout-large目录下的xml,普通手机设备会加载layout目录下的xml资源。...Andriod系统会根据手机屏幕的大小及屏幕密度去选择不同文件夹下的图片资源,以此实现在不同大小不同屏幕分辨率下适配的问题。...= dpi / 160;scaledDensity:字体的缩放因子,正常情况下和density相等,但是调节系统字体大小后会改变这个值android的dp在渲染前会将dp转为px,计算公式:px =...举个例子,设计稿中固定宽度为360dp,当前设备的屏幕宽度为720,那么density = 720 / 360 = 2,其中当前设备的屏幕宽度也可以用DisplayMetrics获取:val targetDensity...而在Android O的设备上,华为、小米、oppo等厂商给出了适配方案。

1.1K20
  • Android 屏幕适配之框架(AndroidAutoSize)(今日头条)适配

    通过阅读源码,我们可以得知,density 是 DisplayMetrics 的成员变量,而 DisplayMetrics 实例通过 Resources#getDisplayMetrics 可以获得,...那么是不是所有的dp和px的转换都是通过 DisplayMetrics 相关的值计算的呢 2.4.布局文件dp的转换 布局文件dp的转换,最终都是调用 TypedValue#applyDimension...value * metrics.xdpi * (1.0f / 25.4f); } return 0; } 这里用到的DisplayMetrics正是从Resources获得的...,将DisplayMetrics#scaledDensity和DisplayMetrics#density设置为同样的值,从而某些用户在系统修改了字体大小失效了,但是我们还不能直接用原始的scaledDensity...,直接用的话可能导致某些文字超过显示区域,因此我们可以通过计算之前scaledDensity和density的比获得现在的scaledDensity,方式如下: 但是测试后发现另外一个问题,就是如果在系统设置中切换字体

    1.4K20

    Android 屏幕适配从未如此简单

    ,而我工具的实现便是如此。...建议 老项目那就不要大动干戈改动适配代码了,新项目我建议采用我工具的使用,可以让你爽到极致,在 BaseActivity setContentView(xx) 之前调用适配代码即可,再啰嗦一次,...传入第二个参数就是设计图转换为 dp 尺寸的大小,比如要做水平固定,可垂直滑动的屏幕适配,设计图宽度为 1080px,你的资源是放在 drawable-xhdpi ,那么它换算为 dp 就是 1080.../ 2 = 540dp,这个 2 怎么的那我就不道破了,这是 Android 基础,不懂的话去补补基础。...如果代码涉及到了 px 和 dp、px 和 sp 互转,一定要用我工具 SizeUtils.dp2px、SizeUtils.px2dp、SizeUtils.sp2px、SizeUtils.px2sp

    83520

    【Dev Club 分享】安卓单元测试:What, Why and How

    ,如何在测试环境下,把DataModel换成mock的对象,而正式代码,DataModel又是正常的对象呢?...接下来讲讲Android单元测试最大的痛点,那就是JVM上面运行纯JUnit单元测试时,是不能使用Android相关的(比如Activity、View等等)的,因为我们开发用到的安卓环境是没有具体实现的...要解决这个问题,一般来说有三种方案: 使用Android提供的Instrumentation系统,将单元测试代码运行在模拟器或者是真机上。...使用Robolectric框架,这个框架基本可以理解为在JVM上面实现了一套安卓的模拟环境,同时给安卓相关的增加了其他一些增强的功能,以方便做单元测试。...但毕竟它也需要merge一些资源,build出来一个模拟的app,因此相对于纯java和JUnit来说,这个速度依然是很慢的。

    1.4K60

    5个Android经典面试题

    什么是Android的Binder机制?它如何实现跨进程通信? Binder 是 Android 中用于跨进程通信(IPC)的一种机制。它允许不同进程之间进行数据交换,而不需要通过中央服务器。...如何在Android实现组件化开发? 组件化开发是将应用分解成多个可重用和可测试的模块。在Android,可以通过以下方式实现: 使用模块化项目结构,每个模块负责特定的功能。...使用依赖注入框架(Dagger2)管理依赖关系。 将资源和配置分离到不同的模块。...解释Android的热修复技术原理。 热修复技术允许开发者在不发布新版本的情况下修复应用的问题。常见的热修复技术包括: 动态加载:在运行时动态加载和替换文件。...如何在Android实现单元测试和集成测试? 单元测试和集成测试是确保应用质量的重要手段。在Android,可以通过以下方式实现: 单元测试:使用JUnit和Mockito等框架测试独立模块。

    9210

    Android训练课程(Android Training) - 测试你的 Activity

    这节课将会教你如何使用android的自定义测试框架(基于流行的Junit框架)。你可以编写你的测试用例验证你程序里的指定行为,和检查在不同的android设备的一致性表现。...测试UI组件 学习如何测试你的Activity的特殊UI组件的 行为. 创建单元测试 学习如何执行单元测试验证一个隔离的activity的行为。...注意: TouchUtils 这个辅助 可以很方便的帮助我们模拟 和应用程序的触摸交互。你可以使用这些方法模拟 点击,滑动,拖放视图控件或者屏幕的行为。...一个单元测试通常要测试一个最小可能的代码单元(可能是一个方法,,组件等),而不依赖于系统或者玩过资源,比如,你可以编写一个单元测试检测一个acitivity有正确的布局或者它正确的触发了一个Intent...注意: 相对于系统或者外部的依赖,你可以使用 模拟框架(mocking framework)的 ” 模拟对象“ ,将模拟对象注入到你的单元测试

    72800

    一种非常简单的Android屏幕适配方案

    image.png 不知道大家有没有看过前一段时间今日头条技术团队发表的一篇关于Android屏幕适配的文章:一种极低成本的Android屏幕适配方式。...Android的开原性导致了Android设备的尺寸的碎片化太严重,而通过查看测试机的尺寸参数会发现,如果用这四个手机测试的话,宽度可以直接整除,而高度不可以(并且我手边的测试机的宽度也可以整除,如果有宽度没法整除的手机呢...最终方案 继续修改之后我得到了最终的方案,修改过后这个的所有内容如下: private static float appDensity; private static float appScaledDensity...使用方法 自己创建一个,将最终方案里面的代码复制粘贴就可以使用了 使用方法:在Application的onCreate()方法: ?...image.png 在BaseActivity: ?

    64840

    【收藏篇】Android 开发中常用的10种工具

    导语 Android开发,收集一些常用的代码工具是非常重要的。现在Android开发技术已经很成熟了,很多代码大牛已经写出了很多框架和工具,我们现在应该要站在巨人的肩膀上做开发了。...今天我把平时开发收集最常用的 10 个工具,分享给大家。以后开发合理利用,对于在平时开发的效率是非常有帮助的 。...dip或dp值转换为px值,保证尺寸大小不变 * * @param dipValue * @param scale * (DisplayMetrics属性...px值转换为sp值,保证文字大小不变 * * @param pxValue * @param fontScale * (DisplayMetrics属性...sp值转换为px值,保证文字大小不变 * * @param spValue * @param fontScale * (DisplayMetrics属性

    70240

    Android 平台实现 CI

    北京办公室的朱傲这次用自己的实践告诉我们如何在Android这个平台实现CI,且看Android CI。...二、Android CI面临的困难 Android环境存在不稳定。Android模拟器在虚拟机存在不能稳定运行的状况。 自动化框架不够成熟。尤其是自动化测试。 无法完成自动化部署。...要想获得单元测试覆盖率报告,Cobertura是个不错的选择。...因而Android持续部署将以持续发布可安装包为目标。 在以上目的下,只需根据自身项目资源找到合适的安装包管理工具即可。本文采用Dropbox管理所有安装包。...CI不同阶段产生了不同维度的反馈,单元测试报告,测试覆盖率等。本实践中将这些反馈都透明的展示在项目首页。之所以没有将这些反馈再以邮件的方式通知所有人,是因为团队成员已经养成了查看CI的习惯。

    1.8K90

    AndroidAutoSize开源库屏幕适配分析

    Activity支持 1.2.4 Fragment支持 1.3 不同分辨率屏幕效果对比 2、AndroidAutoSize原理分析 2.1 基本概念 2.1.1 一些重要的单位 2.1.2 单位转换涉及到的两个重要...:name="design_width_in_dp" android:value="360"/> <meta-data android:name...2.1.2 单位转换涉及到的两个重要 DisplayMetrics.java public class DisplayMetrics { public static final int DENSITY_MEDIUM...其他方案对比 传统的dp、layout_weight等做简单的适配 设备的dpi值并不是任意指定的,它是通过 sqrt(screenWpx2 + screenHpx2) / 屏幕尺寸 计算出的结果(上面模拟器参数是我特意设置...,如果项目想切换为其他屏幕适配方案,因为每个 Layout 文件中都存在有大量 dimens 的引用,这时修改起来工作量非常巨大,切换成本非常高昂 无法覆盖全部机型,想覆盖更多机型的做法就是生成更多的资源文件

    4.2K41

    Android屏幕适配很难嘛?其实也就那么回事

    不知道大家有没有看过前一段时间今日头条技术团队发表的一篇关于Android屏幕适配的文章:一种极低成本的Android屏幕适配方式。没有看过的朋友可以先看看了解一下再回来,可以更好的理解。...final float targetDensity = appDisplayMetrics.widthPixels / 360; 这样做的话宽度适配的比例是没有任何问的,但是我在想,如果需要以高度做适配...Android的开原性导致了Android设备的尺寸的碎片化太严重,而通过查看手机的尺寸参数会发现,如果用这四个手机测试的话,宽度可以直接整除,而高度不可以(并且我手边的测试机的宽度也可以整除,如果有宽度没法整除的手机呢...最终方案 继续修改之后我得到了最终的方案,修改过后这个的所有内容如下: private static float appDensity; private static float appScaledDensity...使用方法 自己创建一个,将最终方案里面的代码复制粘贴就可以使用了 使用方法:在Application的onCreate()方法 如果只是适配一个方向的话,只设置这一句就可以了(我在utils里面设置了默认按照宽度适配

    31620

    Appium系列|创建项目

    现在简单介绍下如何通过Android Studio去创建一个模拟器并启动它。 打开Android Studio,第一次使用的时候可以先创建个Android 工程,具体步骤如下所示: ? ? ? ?...点击“Create Virtual Device”就可以进行模拟器的创建,在如下的界面中选择你要创建的模拟器的手机型号,Nexus 5 ?...模拟器启动完后就可以创建项目的基本结构了。 我们可以在项目的根目录下创建一个文件夹,给这个文件夹任意命名下AUT,专门存放被测试的apk的文件夹。...,这个信息可以通过aapt dump bading apkname获得 capabilities.setCapability("appActivity", ".AppStart");...如果我被测试apk文件放在桌面,然后文件名是osc.apk,就可以在命令行下进入到桌面然后执行如下命令获得启动的值: aapt dump badging osc.apk 如下图所示: ?

    72540

    Android Studio Arctic Fox (2020.3.1) Beta 版发布

    无论您的应用是完全用 Compose 编写的布局,还是混合使用了 Compose 和 View,Layout Inspector 都能帮助您了解布局如何在设备或模拟器上呈现,获得丰富的细节 (传递给每个...您的预览将获得和应用相同的运行环境 (权限、资源)。...△ Google TV 系统映像 Automotive OS 传感器回放 - 您现在可以使用 Android Automotive 模拟模拟驾驶场景,能够回放汽车传感器数据 (速度、档位),以完成您的开发和测试工作流程...arm64 平台支持仍在积极开发,但我们想为您提供起点,以获得您的反馈。...这些扩展控件将为开发者提供强大的工具Android studio 测试应用,导航回放、虚拟传感器和快照。

    38320

    【测试左移专栏】用 Powermock 和 Mockito 做安卓单元测试

    1、单元测试定义和特性 单测定义: 在计算机编程单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)进行正确性检验的测试工作。...在过程化编程,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基(超)、抽象、或者派生(子类)的方法。...尝试使用Junit、Mockito和Powermock编写MVP三层的单元测试用例,在经过一阵探索后,MVP三层的逻辑基本都可以通过Mockito和Powermock模拟出来,运行起来关键是速度快,...上面的单元测试特性也基本都能满足,最终决定使用Junit、Mockito和Powermock这个框架组合进行我们的单元测试用例设计和编写。...整理了一个case的单测流程图,供参考: 5、公共的可复用的抽离出成工具 将一些常用的场景抽象出工具mockBundleMock、HandlerMock、IntentMock、MainThreadHandler

    4K00

    单元测试】--单元测试最佳实践

    使用SetUp方法初始化测试上下文,避免重复的设置。 清理资源: 使用TearDown方法释放测试所需的资源关闭文件、数据库连接等。...以下是如何在NUnit执行数据驱动测试的示例: 假设你有一个名为MathUtils的,其中包含一个方法Add(int a, int b),该方法用于将两个整数相加。...避免在单元测试执行大量的复杂计算或访问外部资源,如数据库或网络服务。 Mock外部依赖: 使用模拟(Mock)对象或桩(Stub)替代外部依赖,如数据库或网络调用。...使用性能分析工具: 使用性能分析工具,性能剖析器,识别测试用例的性能瓶颈。 根据性能分析结果优化测试代码。 监控资源使用: 监控测试用例的资源使用情况,内存、CPU等。...保证单元测试的性能需要编写快速测试、模拟外部依赖、使用并行执行、减少I/O操作、监控资源使用等方法。这些实践有助于提高代码质量和可维护性,确保测试在不同情况下都有效。

    53950

    Android开发笔记(一百一十三)测试工具

    单元测试TestCase Android的sdk提供了对项目进行单元测试的功能,开发包的android.test下面便是专门用来单元测试。...单元测试的作用是通过模拟文本输入和手势输入(点击操作),从而让app自动执行一系列的操作,这样就能够检查程序是否运行正常。...3、在测试工程创建一个TestCase的派生,该派生可从ActivityTestCase可继承自ActivityTestCase,也可继承自InstrumentationTestCase。...4、右击测试工程,在右键菜单依次选择“Run As”——“Android JUint Test”,即可在测试设备上看到单元测试的运行页面。...ADT和Adnroid Studio都提供了自带的模拟器,用于开发者测试app的页面功能,可是众所周知,自带的模拟器又耗资源、运行又慢,所以实际开发基本不用自带模拟器。

    78430
    领券