【问题标题】:VmService timestamp does not correspond to the flutter driver timeline event timestampVmService时间戳与flutter驱动时间线事件时间戳不对应
【发布时间】:2020-11-17 17:08:05
【问题描述】:

我在哪里进行飞镖测试

setUp() async {
  vm_service.VmService vms = await vmServiceConnectUri(vmUrl);
  vmsStartTime = (await vms.getVMTimelineMicros()).timestamp;
  await flutterDriver.startTracing()
}
tearDown() async {
  vmsEndTime = (await vms.getVMTimelineMicros()).timestamp;
  Timeline timeline = await driver.stopTracingAndDownloadTimeline();
}

每个测试运行大约 30 秒。出于某种原因,在测试之后我有类似的东西

vmsStartTime = 4323069605
vmsEndTime =   4323088753

在时间轴上的第一个事件 timestampMicros 是

"ts":                      4318344424

还有:

"timeOriginMicros": 4318344424,
"timeExtentMicros": 2080190

我使用 vmsStartTest 和 vmsEndTest 过滤掉与每个测试相关的事件,并且由于此类问题,我错过了时间线上与测试相关的所有事件。请帮助我了解为什么会发生这种情况以及如何处理?

【问题讨论】:

    标签: flutter dart virtual-machine flutter-test flutterdriver


    【解决方案1】:

    目前使用traceAction 似乎可以得到最好的结果。所以我在测试期间所做的每一个动作都是traceAction 的主题。每个下一个traceAction 的时间线附加到全局时间线 json 对象(附加事件,持续时间计算为 customTimelineJson["timeExtentMicros"] = timeline.json["timeOriginMicros"] + timeline.json["timeExtentMicros"] - customTimelineJson["timeOriginMicros"]; 这有助于将大部分事件保留在时间线中。测试开始时间映射到时间线中第一个事件中第一个事件的timestampMicros。测试结束取自最后一个traceAction 的最后一个时间线中的最后一个事件。 timeOriginMicros 取自第一个 traceAction 时间线的第一个事件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-12
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2013-03-23
      相关资源
      最近更新 更多