【问题标题】:Why to hold tests in a separate project rather then folder?为什么将测试保存在单独的项目而不是文件夹中?
【发布时间】:2011-01-16 19:08:44
【问题描述】:

只是出于兴趣 - 为什么决定将测试移至单独的项目,而不仅仅是单独的源文件夹?

【问题讨论】:

    标签: android unit-testing


    【解决方案1】:

    测试应用程序“检测”目标或主应用程序。

    测试项目的 AndroidManifest.xml 中的检测部分允许测试在与应用程序相同的进程中运行。此检测功能允许测试应用程序以受控方式逐步完成 android 组件生命周期。

    拥有此控件允许您(例如)为活动生命周期(创建、恢复、暂停、销毁)的案例创建可重复的测试。

    http://developer.android.com/guide/topics/testing/testing_android.html#Instrumentation

    总而言之,额外的应用程序对测试目标具有特殊的权力。 由于这些都封装在测试应用程序中,因此您的实际应用程序只需要具有执行其职责所需的权限即可。

    【讨论】:

    • 不确定这是不是真的,根据我的经验,测试中使用的权限必须在测试目标清单中声明(如果你问我,这很糟糕)
    • 确实有些测试库要求目标有额外的权限。例如,我认为 Robotium 过去需要获得权限才能查看哪些进程正在运行。我使用 robotium 并同意这并不理想。然而,robotium 似乎不再需要这个。我假设由于测试应用程序作为目标应用程序进程的一部分运行,它使用目标的权限。你能更具体地谈谈你的经历吗?我的答案是“为什么决定将测试转移到一个单独的项目”这个问题。
    • 一个简单的例子,我有 App A 和 Test Project B 测试 App A。如果我想在 Test Project B 中使用互联网来验证结果(我知道,这是一个糟糕的测试)但是应用程序 A 没有互联网权限,无论如何我都必须将其添加到应用程序 A,因此给生产应用程序不必要的权限,这是错误的。看到测试项目有它自己的清单,最好能够在那里定义测试特定权限,虽然我理解在低级别这将非常困难
    • 我同意如果测试可以有额外的权限会很好。我所说的“特殊能力”是指允许测试应用程序控制和执行正常(创建/启动/暂停/销毁)生命周期的工具。
    【解决方案2】:

    根据我的解释,当前文档指出您应该将测试代码保存在应用程序项目内的文件夹“tests”中的单独项目中 =>“项目中的项目”
    http://developer.android.com/guide/topics/testing/testing_android.html#TestProjects

    怎么样?
    Creating an Android Test project in Eclipse

    为什么?
    而不是前。 40 个项目,你有 20 个项目 => 更好的概览,更少的维护,更快的 Eclipse。
    两个 build.xml => 使用 Jenkins 更轻松地构建 CI
    两个清单文件 => ADT 构建工具的未来版本将支持清单合并

    【讨论】:

      【解决方案3】:

      我认为通过这种方式,您可以制作两个单独的应用程序,一个是常规应用程序,另一个是测试应用程序。 如果你想发布你的应用程序,你不需要给每个人你的测试。但也许这样做是为了更好的目的!

      【讨论】:

      • 是的,这样做是为了不将测试代码内置到应用程序本身中,从而允许针对应用程序的最终生产版本运行测试代码,而无需增加应用程序的大小。内置测试代码。
      • 哦,请注意,您可以将测试直接构建到您的应用中,没有什么可以阻止这一点。这样做没有充分的理由,因为测试代码链接到应用程序代码,因此可以完全访问它。
      • 但是android开发网站上说“最好的办法是添加测试项目,使其根目录tests/与主应用项目的src/目录同级。”含义测试内置在应用程序中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多