我读了一些关于TDD和一般测试的内容,并决定我想尝试一下。
在了解如何在Android Studio中运行测试后,我意识到我的大多数方法都是私有的(因此根据此链接直接测试它们是错误的:How do I test a class that has private methods, fields or inner classes?)。
是什么给出的?这是一种设计气味吗?我应该以某种方式进行重构吗?
鉴于我应该只能在失败的测试后编写代码,我将如何进行公共方法很少的类,例如我的大多数活动? 我错过了什么吗?
请记住,我是新手。
答案 0 :(得分:5)
我谈到的大多数人同意你应该只测试你的API方法。如果您认为类私有方法的目的是支持公共方法,那么您的公共方法正常工作的事实意味着您的私有方法也正常工作。
当我有一个有点复杂的私有方法并且我认为应该进行单元测试时,我只是将其设为package-private(无修饰符),因此它不会在类API中公开但仍可通过测试访问类。
具体解决您的问题:
是什么给出的?这是一种设计气味吗?我应该以某种方式进行重构吗?
听起来不像是设计气味。相反,拥有比公共方法更多的私有方法可能意味着您的类代码是模块化的并遵循封装原则。
鉴于我应该只能在失败的测试后编写代码,我将如何进行公共方法很少的类,例如我的大多数活动?我错过了什么吗?
假设你是从头开始创建一个新类,我会这样做: