我阅读了一些关于 TDD 和一般测试的内容,并决定尝试一下。
在了解如何在 Android Studio 中运行测试后,我意识到我的大部分方法都是私有(private)的(因此直接测试它们是错误的,按照此链接:How do I test a class that has private methods, fields or inner classes?)。
什么给了?这是设计味道吗?我应该以某种方式重构吗?
鉴于我应该只能在测试失败后编写代码,我将如何处理公共(public)方法很少的类,例如我的大部分 Activity ? 我错过了什么吗?
请记住,我是新手。
最佳答案
我谈论的大多数人都同意您应该只测试您的 API 方法。如果您假设类私有(private)方法的目的是支持公共(public)方法,那么您的公共(public)方法正常工作的事实有点意味着您的私有(private)方法也正常工作。
当我有一个有点复杂并且我真的认为应该进行单元测试的私有(private)方法时,我只是将它设为包私有(private)(没有修饰符),这样它就不会暴露在类 API 中,但仍然可以被测试访问类。
具体解决您的问题:
What gives? Is this a design smell? Should I refactor somehow?
这听起来不像是设计味道。相反,私有(private)方法多于公共(public)方法可能意味着您的类代码是模块化的并且遵循封装原则。
Given that I should only be able to write code after a failing test, how would I go about classes that have very few public methods, such as most of my activities? Did I miss something?
假设您要从头开始创建一个新类,我会这样做:
- 设计类API方法
- 对于每个 API 方法:
- 为方法编写单元测试
- 编写代码直到测试通过
- 重构方法,根据需要提取私有(private)方法
如果您这样做,您可以确保覆盖了您的私有(private)方法,因为您通过公共(public)方法测试了它们的功能。
关于java - 如果我的大部分 Activity 方法都是私有(private)的,如何在 Android 中实践 TDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29001435/