如果我的大多数活动的方法都是私有的,如何在Android中练习TDD?

Dan*_*ida 1 java junit android unit-testing

我读了一下关于TDD和测试的一般情况,并决定我想尝试一下.

在找到如何在Android Studio中运行测试之后,我意识到我的大多数方法都是私有的(因此直接测试它们是错误的,因为这个链接:我如何测试具有私有方法,字段或内部类的类?).

是什么赋予了?这是一种设计气味吗?我应该以某种方式重构吗?

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

请记住,我是新手.

And*_*ira 5

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

当我有一个有点复杂的私有方法并且我认为应该进行单元测试时,我只是将它设为package-private(无修饰符),因此它不会在类API中公开,但仍可由测试类访问.

特别解决您的问题:

是什么赋予了?这是一种设计气味吗?我应该以某种方式重构吗?

它听起来不像是一种设计气味.相反,拥有比公共方法更多的私有方法可能意味着您的类代码是模块化的并遵循封装原则.

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

假设你是从头开始创建一个新类,我会做这样的事情:

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

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

此外,代码覆盖工具(如JaCoCoCobertura)可能有助于查找代码的哪些部分缺乏正确的测试.