【问题标题】:How to practice TDD in Android if most of my activities' methods are private?如果我的大部分活动方法都是私有的,如何在 Android 中练习 TDD?
【发布时间】:2015-03-12 03:36:20
【问题描述】:

我阅读了一些关于 TDD 和一般测试的信息,并决定尝试一下。

在了解了如何在 Android Studio 中运行测试后,我意识到我的大部分方法都是私有的(因此直接测试它们是错误的,根据此链接:How do I test a class that has private methods, fields or inner classes?)。

什么给了?这是设计的味道吗?我应该以某种方式重构吗?

鉴于我应该只能在测试失败后编写代码,我将如何处理公共方法很少的类,例如我的大部分活动? 我错过了什么吗?

请记住,我是新手。

【问题讨论】:

    标签: java android unit-testing junit


    【解决方案1】:

    我谈到的大多数人都同意你应该只测试你的 API 方法。如果您假设类私有方法的目的是支持公共方法,那么您的公共方法正常工作这一事实意味着您的私有方法也正常工作。

    当我有一个有点复杂的私有方法并且我真的认为应该进行单元测试时,我只需将其设为包私有(无修饰符),这样它就不会在类 API 中公开,但仍然可以通过测试访问类。

    具体解决您的问题:

    什么给了?这是设计的味道吗?我应该以某种方式重构吗?

    这听起来不像是设计的味道。相反,私有方法多于公共方法可能意味着您的类代码是模块化的,并且遵循封装原则。

    鉴于我应该只能在测试失败后编写代码,我将如何处理公共方法很少的类,例如我的大部分活动?我错过了什么吗?

    假设您正在从头开始创建一个新类,我会这样做:

    1. 设计类 API 方法
    2. 对于每个 API 方法:
      1. 为方法编写单元测试
      2. 编写代码直到测试通过
      3. 重构方法,根据需要提取私有方法

    如果你这样做,你可以确保你的私有方法被覆盖,因为你通过公共方法测试了它们的功能。

    此外,JaCoCoCobertura 等代码覆盖率工具可能有助于找出代码的哪些部分缺乏适当的测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多