我的 Android 应用有一些运行缓慢的功能。单元测试完美地捕获了它。单元测试执行表明它的运行速度比应有的要慢。
Android Studio 一直在运行方法旁边为我提供一个菜单选项:“配置文件”而不是运行。我选择了该选项,但似乎与运行没有什么不同。我希望 Android Studio 在测试完成后打开一个窗口,显示所有方法调用的时间。
我搜索过谷歌和安卓网站。我发现的一切都是关于在 Android Studio 中进行分析的。
如何分析 Android 单元测试? (该配置文件选项到底有什么作用?)
最佳答案
我遇到了同样的问题,我决定研究一个解决方案,因为我认为这不会太难。男孩是我错了。
我从未发布的原始答案包含一些尴尬的摆弄 Thread.sleep
和手动计时并在正确的时间按下正确的按钮。这被代码中使用 Debug API 的更优雅的解决方案所取代。
使用 Android Studio 3.1.3 这些是我的步骤:
Thread.sleep
和指示开始/停止的日志输出您可以使用 Debug.startMethodTracing("File"); or Debug.startMethodTracingSampling() and Debug.stopMethodTracing();
的组合或类似(见 https://developer.android.com/studio/profile/generate-trace-logs)。我的代码现在看起来像@Test
public void Test_Something() throws Exception
{
Debug.startMethodTracing("Predict");
// DO YOUR CODE
Debug.stopMethodTracing();
}
(再次阅读链接页面,因为您需要
WRITE_EXTERNAL_STORAGE
权限,我的应用程序已经拥有该权限,因此在我的情况下并没有那么麻烦。编辑 :升级到 Android Studio 3.2 后,我现在确实可以加载和保存 session 并将它们显示在 Profiler 中。这已经改善了很多。有趣的事实:当我在 Android Studio 3.1.3 中打开跟踪时,我看到了方法的命中计数(方法被调用的频率)而不是它们的时钟时间。另一方面,在分析器中,我还无法找到通话时间,而是可以访问挂钟时间。如果有人也有关于如何显示这些的提示,那就太好了。
关于unit-testing - 如何在 Android Studio 中分析测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50587349/