【问题标题】:Is it a UNIT Test or an Integration test? [closed]是单元测试还是集成测试? [关闭]
【发布时间】:2011-05-15 01:09:12
【问题描述】:

我正在从事一个学校项目,并且正在研究 Android 应用程序的测试可能性。

在此页面上:http://developer.android.com/resources/tutorials/testing/helloandroid_test.html Google 撰写有关单元测试的文章。 这真的是单元测试吗?单元测试不会集成所有类,也不会在这种情况下进行测试。

所以我的观点是,它不是单元测试,而是集成测试。 你怎么看?

【问题讨论】:

  • 我在该链接上收到 404 错误。
  • 抱歉,已修复链接...
  • 那肯定是一个集成测试。如果您想对 Android 应用程序进行单元测试,请尝试使用 robolectric。
  • 我仍然在该链接上得到 404。 :(

标签: android unit-testing tdd


【解决方案1】:

如果满足以下条件,则测试不是单元测试:

  • 它与数据库对话
  • 它通过网络进行通信
  • 涉及文件系统
  • 它不能与您的任何其他单元测试同时运行
  • 您必须对您的环境做一些特殊的事情(例如编辑配置文件)才能运行它。

【讨论】:

    【解决方案2】:

    各位程序员们好。

    我想补充一点,根据我的经验,最好测试一个对象的行为,如果它做了你需要它做的事情(对于你的问题域),无论它是一种方法还是多种方法来通过你的测试. 我知道这听起来像是简单的测试方法,但还有更多。 Nat Pryce 和 Steve Freeman 合着的“Growing Object Oriented Software, Guided by Tests”是一本有助于理解这一点的好书。

    总而言之,好问题和好答案。 继续努力吧。 :-)

    【讨论】:

      【解决方案3】:

      我认为对于什么是单元测试没有普遍的共识,所以很难说。虽然有些人可能会争辩说它应该是一个非常小的代码单元(例如一个方法),但这是非常有限的,特别是考虑到当您重构一个通过测试时,您可能将该代码放入多个方法甚至类中。

      Roy Osherove's definition如下:

      单元测试是一种快速的、在内存中的、 一致、自动化和可重复 功能性工作单元的测试 系统。

      一个工作单元是任何功能 系统中的场景包含 逻辑。它可以短至 函数,或者它可以跨越多个 类和函数,它提供 内部或商业价值 正在测试的系统。

      'Fast' 和 'in-memory' 是,IMO,将其与集成测试区分开来的主要内容。如果你按那个去,那么我认为谷歌测试确实是单元测试。

      【讨论】:

      • 我宁愿强调“自包含”而不是内存。自包含测试不涉及磁盘访问、网络、进程间通信、环境变量或被测试单元外部的一些其他状态。如果可以为整个程序编写一个符合这个特性的测试,那就是单元测试。独立性、一致性、可重复性和自动化是隐含的。在 unittest 中,外部状态通常是通过 mocking 来模拟的。
      • 谷歌的例子都需要一个模拟器来测试。这需要很多时间,而且它们不是独立的。谷歌的一些人使得使用 JVM 而不是 de DVM 进行测试成为可能 (sites.google.com/site/androiddevtesting/notepadsample)。所以这看起来更加独立......看起来谷歌使用了错误的词?
      • @Lie Ryan - 听起来很合理,尽管我不认为“自包含”是一个非常明确的定义。至少“内存中”是相当容易确定的——尽管您可以使用内存数据库并使用“单元”测试来测试整个系统,这对我来说听起来不正确。
      • 我会说这是一个“单元测试”。测试需要在某些环境中运行。只要环境是自包含且可编写脚本的,那么环境的细节为什么重要?
      • @lans - 是的,对模拟器的需求确实使水有些混浊。当然,对于整个系统,我会将“单元测试”定义为无需此类环境或其他配置(例如使用 POJO)即可运行的测试,而涉及模拟器的端到端样式测试我会考虑集成测试。尽管罗伊的定义似乎没有做出任何这样的区分。选择适合你的定义吧,我猜!
      猜你喜欢
      • 2021-12-19
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多