如何检测是否在Firebase测试实验室中运行

13

我最近在Firebase应用的设置中发现了一个问题。我们已经配置了预发布报告,这意味着测试实验室设备正在为我们的分析贡献大量的匿名会话。

有没有办法检测设备是否正在运行这些测试?例如,isUserAMonkeyisRunningInTestHarness在测试实验室中是否返回true?如果是,那么我可以相应地调整我的分析等配置。

2个回答

24

实际上,在文档中已经提到了

您可以检查是否存在名为“firebase.test.lab”的系统属性:

@Nullable String testLabSetting =
  Settings.System.getString(context.getContentResolver(), "firebase.test.lab");
if ("true".equals(testLabSetting)) {
  // Do something when running in Test Lab
}

2
这里还有一个后续问题。使用此代码似乎已检测到大多数运行自动化测试的设备,但并非全部。 Play 预发布报告指示在 Nexus 5/7/9 和 Galaxy 手机上运行了测试。 这些设备已停止出现在我们的日志中,但是一个流氓 Nexus 5X 每次构建时都会出现。是否可能存在其他配置变量需要检查,而不仅仅是这里提到的“firebase.test.lab”属性? - tmtrademark
据我所知没有。欢迎加入 Firebase Slack 上的 #test-lab 频道,了解更多相关信息。如果有问题,我们会进行调查。https://firebase.community/ - Doug Stevenson
请注意,如果您将此答案转换为Kotlin,则testLabSetting可能为空,因此您需要将testLabSetting声明为String?,否则,如果在非测试实验室设备上启动应用程序,则会遇到令人讨厌的NPE。 - guy.gc

2

如果设备在 Firebase 测试实验室 IP 范围内,则您的“测试设备”应检查 IP 地址并禁用分析。

请参阅我的答案https://dev59.com/XZXfa4cB1Zd3GeqPd11a#54954273,其中包含一个处理此问题的 Util 方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接