在参数化测试中,对于第二次迭代而没有启动活动



使用参数化测试时,浓缩咖啡在第一个测试之后如何运行测试有所不同?

我有两个参数,如果我自己进行操作,它们都可以正常运行(如果我评论其中一个并且只有一个参数),或者,如果我扭转了第一个订单,则第一个总是通过。

,但是由于某种原因,当我将它们一起运行时,第二个总是失败。实际上,一次没有失败。没有更改任何事情,它有一次。但是只有一次。因此,可能有一个错误,但我倾向于认为这是我正在做的事情(或不做)。

实际出现的问题是将一个字段设置为测试中途(根据调试器)。但是我似乎无法弄清楚如何或为什么,尤其是因为它在第一次测试中没有发生。因此,我在执行此操作的代码中找不到任何明显的东西,但是我也看不到浓缩咖啡有什么不同。有什么想法吗?

我遵循了调试器,它向我证明了该值已设置,然后出于某种原因暂停当前活动以启动对话框,该值将设置为null。但仅在第二个测试中。在第一个测试中,在这种完全相同的情况下,它没有这样做。为什么?

编辑:好的,我已经进一步缩小了它,但仍然不确定为什么要这样做。有点奇怪,但是我已经通过调试器发现了,在第一个测试中的OnDetach被称为 on Resume in Resume进行第二次测试。为什么会这样?

无论如何,这绝对是为什么我遇到问题的原因是使值null源自Ondetach,并且该值最初是从OnResume中的一种方法设置的。这样就解释了这一点。但是为什么会发生?


登录的问题:https://code.google.com/p/android/issues/detail?id=235247

好吧,我找到了一个解决方案。由于在当前测试中曾在on resume进行一次调用,因此我在ondestroy中将代码清除了我的听众的开始。现在,当Onresume中的其他代码运行时,它并没有被Ondestroy的不良时机无效。通过存储库访问听众,该存储库一直保持活跃。

希望这对任何阅读的人都有意义,以防他们面临类似的问题。到目前为止,我还没有注意到这种解决方法的任何副作用。所有测试通过,实际应用程序在手动运行时也可以正常工作。

编辑:此解决方法现在引起问题,因此我必须不敏感我的答案。原因是因为当我致电另一个活动以进行结果时,当它返回时,听众在俄罗斯州被杀死。在这种情况下,Ondestroy尚未杀死,因此不会引起此问题。

编辑2和当前解决方案:这个问题很难为读者测试,因此我创建了一个测试应用程序和一个新的简单问题。从那以后,我找到了我在这篇文章中解释的一个工作解决方案:浓缩咖啡才等到活动被破坏之前,然后为下一个测试创建新的解决方案

我相信,基于阅读一些元Q&的A,因此更喜欢没有删除问题,所以我将在此处留下这个问题。

最新更新