gpt4 book ai didi

java - 大量单元测试导致卡住并导致 Binder Transaction 失败

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:29 24 4
gpt4 key购买 nike

我为我的 Android 应用程序编写了大约 400 个单元测试。如果我逐个包运行测试,一切正常,我的所有测试都通过了。但是,如果我尝试同时运行它们,最终(大约 360 次测试),Android 开始吐出 !!!失败的 Binder 交易错误 !!!。在大约 10-20 个这样的错误之后,我正在测试的应用程序的进程被终止,单元测试甚至从未完成。

我应该注意到,在此期间 Eclipse 在控制台中报告 Collecting test information。我认为这很奇怪,因为它表明它正在运行测试,即使 JUnit UI 没有反射(reflect)这一点。当一切正常时,在 Collecting test information 阶段我看到测试运行,然后出现 JUnit UI,然后所有测试再次运行(我通过阅读 logcat 知道这一点)。这是(我认为)一个单独的问题,但我觉得如果有人知道那是什么,我会提到它。

2011 年 6 月 6 日编辑

根据下面克里斯托弗的回答,我已经证实这只会在尝试通过 Eclipse 运行时发生。如果我使用 ANT 运行我的测试套件,所有测试最终都会执行。

当我现在尝试运行我的测试套件时,Eclipse 基本上卡在“收集测试信息”上。我没有让它运行很长时间,但我会尽快尝试一下,看看它是否能完成。

最佳答案

我再次调查了这个问题,据我所知,这纯粹是 Android Eclipse 插件的问题。一个似乎已解决但有时仍会发生的问题(可能与机器有关)。

如您所述,Eclipse 插件似乎将所有测试运行两次。它第一次实际做的是收集测试套件和测试名称,以便它可以在漂亮的分层 JUnit UI 中显示所有测试名称。

但是,像这样“运行”测试似乎会导致问题。作为 Android SDK 工具 v8 的一部分,a "workaround" was added在检查每个测试之间放置 15 毫秒的延迟。这样做是为了防止“Binder 事务失败......对于大型测试套件”。

确实,我回到了出现“FAILED BINDER TRANSACTION”错误的项目,我无法在命令行上重现它。我们还在 Eclipse 中进行了尝试,但它无法再被复制(尽管我确信我们最初看到它时已经拥有 SDK Tools r8+)。

但是,我仍然可以在 Eclipse 中大致重现它。尝试使用最新的 Android 工具从 Eclipse 再次运行您的测试,或者尝试我创建的这个最小的 GitHub 存储库,看看您是否可以重现它:
https://github.com/orrc/android-large-test-failures#readme

关于java - 大量单元测试导致卡住并导致 Binder Transaction 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com