Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我的大多数活动方法都是私有的,那么如何在Android中练习TDD?_Java_Android_Unit Testing_Junit - Fatal编程技术网

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

Java 如果我的大多数活动方法都是私有的,那么如何在Android中练习TDD?,java,android,unit-testing,junit,Java,Android,Unit Testing,Junit,我读了一些关于TDD和测试的文章,决定尝试一下 在了解了如何在Android Studio中运行测试后,我意识到我的大多数方法都是私有的,因此直接测试它们是错误的,如下链接所示: 有什么好处?这是设计的味道吗?我应该以某种方式重构吗 考虑到我只能在测试失败后编写代码,我该如何处理公共方法很少的类,比如我的大多数活动? 我错过什么了吗 请记住,我是新手。我谈论的大多数人都同意,您应该只测试您的API方法。如果假设类私有方法的目的是支持公共方法,那么公共方法工作正常这一事实意味着私有方法也工作正常

我读了一些关于TDD和测试的文章,决定尝试一下

在了解了如何在Android Studio中运行测试后,我意识到我的大多数方法都是私有的,因此直接测试它们是错误的,如下链接所示:

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

考虑到我只能在测试失败后编写代码,我该如何处理公共方法很少的类,比如我的大多数活动? 我错过什么了吗


请记住,我是新手。

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

当我有一个有点复杂的私有方法,并且我真的认为应该进行单元测试时,我只是将其包私有化,不使用修饰符,这样它就不会暴露在类API中,但仍然可以被测试类访问

具体解决您的问题:

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

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

考虑到我只能在测试失败后编写代码,我该如何处理公共方法很少的类,比如我的大多数活动?我错过什么了吗

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

设计类API方法 对于每个API方法: 编写方法的单元测试 编写代码直到测试通过 重构方法,根据需要提取私有方法 如果您这样做,您可以确保您的私有方法被覆盖,因为您通过公共方法测试了它们的功能


此外,代码覆盖率工具(如或)可能有助于发现代码的哪些部分缺少适当的测试。

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

当我有一个有点复杂的私有方法,并且我真的认为应该进行单元测试时,我只是将其包私有化,不使用修饰符,这样它就不会暴露在类API中,但仍然可以被测试类访问

具体解决您的问题:

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

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

考虑到我只能在测试失败后编写代码,我该如何处理公共方法很少的类,比如我的大多数活动?我错过什么了吗

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

设计类API方法 对于每个API方法: 编写方法的单元测试 编写代码直到测试通过 重构方法,根据需要提取私有方法 如果您这样做,您可以确保您的私有方法被覆盖,因为您通过公共方法测试了它们的功能

此外,代码覆盖率工具(如或)可能有助于查找代码中哪些部分缺少适当的测试