创建一个模拟 AlarmManager 进行测试

2024-03-07

我希望能够测试一些添加的代码pending intents to the 报警管理器 http://developer.android.com/reference/android/app/AlarmManager.html但虽然我可以创建自己的mock context返回它getSystemService()我无法创建自己的警报管理器子类,因为它有一个私有构造函数。

是否有另一种(更好?)方法让我能够测试我的代码是否根据我的测试先决条件正确添加(或不添加)警报?


我能想到的两件事可能会有所帮助:

  1. 用于检查是否已手动安排警报

    adb shell dumpsys alarm | grep com.your.package

  2. 要检查代码中是否设置了警报,您可以使用 Robolectricshadows http://robolectric.org/extending/。这是一个使用它的示例:http://www.multunus.com/blog/2014/03/tdd-android-using-robolectric-part-3/ http://www.multunus.com/blog/2014/03/tdd-android-using-robolectric-part-3/

您可以使用(来自文章):

@RunWith(RobolectricTestRunner.class)
public class ResetAlarmTest {
    ShadowAlarmManager shadowAlarmManager;
    AlarmManager alarmManager;

    @Before
    public void setUp() {
       alarmManager = (AlarmManager) Robolectric.application.getSystemService(Context.ALARM_SERVICE);
       shadowAlarmManager = Robolectric.shadowOf(alarmManager);
    }

    @Test
    public void start_shouldSetRepeatedAlarmWithAlarmManager() {
        Assert.assertNull(shadowAlarmManager.getNextScheduledAlarm());
        new ResetAlarm(Robolectric.application.getApplicationContext());
        ScheduledAlarm repeatingAlarm = shadowAlarmManager.getNextScheduledAlarm();
        Assert.assertNotNull(repeatingAlarm);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建一个模拟 AlarmManager 进行测试 的相关文章

  • GCM 向主题发送消息:TOO_MANY_TOPICS 错误

    以前 GCM 每个应用程序有 100 万个主题订阅的限制 我发现他们现在已经取消了这一限制 基于发布 订阅模型 主题消息支持 每个应用程序无限订阅 https developers google com cloud messaging to
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • 如何将安卓手机从睡眠状态唤醒?

    如何以编程方式将 Android 手机从睡眠状态唤醒 挂起至内存 我不想获取任何唤醒锁 这意味着手机在禁用 CPU 的情况下进入 真正的 睡眠状态 我想我可以使用某种RTC 实时时钟 机制 有人有例子吗 Thanks 为了让Activity
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • 无法在自定义 AOSP 上安装 Google Play 中的某些应用程序:项目不可用。理由:9

    我在尝试从 Google Play 安装某些应用程序时收到以下错误 LibraryUtils isAvailable not available restriction 9 DocUtils getAvailabilityRestricti
  • 如何测试 JUnit 测试的 Comparator?

    我需要测试 Compare 方法 但我对如何测试感到困惑 我可以看看该怎么做吗 public class MemberComparator implements Comparator
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 在 Android 上按下电源按钮时,如何防止先调用 onDestroy() 再调用 onCreate()

    我正在记录每个 onCreate 和 onDestroy 调用 我发现 一旦我单击 Android 上的电源按钮 以及模拟器上的电源按钮 我的活动中就会拨打电话 gt onDestroy gt onCreate 这会杀死我的游戏 然后立即从
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 事件与路由器绑定

    我在用着导航网 https github com krasimir navigo对于一个小网站 用户被要求登录到登陆页面上的帐户 然后在验证其帐户后路由到主模板 页面对象是从 Firebase 数据库填充的 因此我初始化一个类并将多个事件和
  • 是否可以在 Sublime Text 2 中链接键绑定命令?

    有时 我想在 Sublime Text 中显示侧栏中的当前文件 然后在文件夹结构中导航 这可以使用命令来实现reveal in side bar and focus side bar然而 它们必须绑定到两个单独的按键组合 因此我必须执行 2
  • 在 SQL Server 中将月份名称转换为月份编号

    在 T SQL 中 将月份名称转换为数字的最佳方法是什么 E g January gt 1 February gt 2 March gt 3 Etc 是否有任何内置函数可以做到这一点 这个怎么样 select DATEPART MM jan
  • 如何用新列覆盖 Spark 数据框中的整个现有列?

    我想用一个新列覆盖 Spark 列 该新列是二进制标志 我尝试直接覆盖 id2 列 但为什么它不像 Pandas 中的就地操作那样工作 如何在不使用 withcolumn 创建新列和 drop 删除旧列的情况下做到这一点 我知道 Spark
  • ASP.NET Core 5.0 RouteDataRequestCultureProvider 删除 url 中的默认区域性

    我尝试向我的 asp net core 项目添加多语言功能 但 RequestLocalization 中的 net 3 1 和 5 0 之间存在一些变化 我无法得到我想要的 我为每种语言添加了资源文件 并在我的剃刀页面中使用了资源 它可以
  • Windeployqt 不会为调试应用程序部署 qwindowsd.dll

    我正在尝试使用windeployqt exe Qt 5 13 2 为 CMake 3 16 生成的调试应用程序部署 dll 除了部署的平台插件 dll 之外 所有 dll 均已正确部署qwindows dll代替qwindowsd dll当
  • 系统verilog中的打包向量与未打包向量

    看看我在 System Verilog 中维护的一些代码 我看到一些信号的定义如下 node range hi range lo x 以及其他定义如下 node y range hi range lo 我明白那个x被定义为打包的 而y被定义
  • 对特定行禁用 StyleCop

    我们在 C 项目中使用 StyleCop 但在某些情况下 我们希望避免这些规则 我知道你可以添加
  • 阻止自动化工具访问网站

    我们网站上的数据很容易被窃取 我们如何检测是否有人正在查看网站或工具 一种方法是计算用户在页面上停留的时间 我不知道如何实施 任何人都可以帮助检测并防止自动化工具从我的网站上抓取数据吗 我在登录部分使用了安全图像 但即使如此 人们也可以登录
  • 包 org.springframework.data.repository 不存在 spring boot jpa

    我对 spring boot jpa 有一个小问题 我已将依赖项添加到 POM xml 我可以从 spring 工具套件正常运行它 作为 spring boot 应用程序运行 但是当我从命令行 mvn spring boot run 运行时
  • C++11 中没有“sto{short, unsigned Short}”函数吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 完全奇怪的 Firefox CSS bug

    我从事前端开发很长时间了 以前从未遇到过这样的错误 将以下 HTML 保存到文件并在 Firefox 中查看 我的是 3 6 3 h2 Some normal text strong some bold text strong weird
  • XSLT - 作为一系列节点的参数

    我的目标是将多个文件的名称传递到 XSLT 中并使用document myFile 我试图使用 saxon 引擎在命令行上传递参数 但它不断抛出错误 我知道我可以写出一个清单文件 对其进行处理 然后在完成后将其删除 但这似乎需要大量额外工作
  • 如何检查名称是否已经存在? Azure 资源管理器模板

    是否有可能check 在 ARM 模板中 如果我的虚拟机名称已存在 我正在为 Azure 市场开发解决方案模板 也许可以在其中设置一个参数用户界面定义 uniqe 目标是重现这个绿色钩子 一些注释 VM 名称只需在资源组内唯一 而无需在订阅
  • 如何将编译结果(使用javac)存储到文本文件中?

    我想编译一个Hello World程序 我用javac Hello World java 但是在cmd终端窗口中 它显示 semicolon is missing compilation error 如何将此编译错误存储到文本文件中 或者甚
  • R ggplot:如何将点与躲避条对齐?

    我想知道如何将 geom point 点与 geom bar 躲避条位置对齐 根据年份参数对条形进行躲避 但无论年份参数如何 点都绘制在躲避条形的中间 可重现的代码 set seed 42 dat lt data frame Respons
  • 在 dispose 方法中获取提供者方法不起作用

    我正在尝试访问 dispose 函数中的提供者方法 override void dispose if canRemoveData Provider of
  • JPA 查询中使用 @Transient 访问字段

    我有一个具有瞬态属性的实体 Entity Table name asset public class Asset Transient private String locationIdentifier N A SuppressWarning
  • TypeError:JSON.stringify 无法序列化循环结构。 stringify@[本机代码]

    在我的 React Native Expo 项目中 我遇到一个错误 显示 TypeError JSON stringify 无法序列化循环结构 stringify native code 任何人都可以帮助我解决这个问题吗 我尝试使用一个名为
  • 创建一个模拟 AlarmManager 进行测试

    我希望能够测试一些添加的代码pending intents to the 报警管理器 http developer android com reference android app AlarmManager html但虽然我可以创建自己的