我正在我的项目上对我的纯java文件运行纯JUnit4 java测试,但是在不手动公开的情况下,我无法找到清楚地使用@VisibleForTesting的方法。
例如:
@VisibleForTesting
public Address getAddress() {
return mAddress;
}
方法必须是public
,才能让它成为测试的“公共”,但是在这种情况下,注释没有意义,对吗?如果注释不起任何作用,为什么不直接使用注释呢?
发布于 2020-04-30 13:12:34
标签本身有助于链接器识别不必要的访问。
为了降低直接使用它的风险,可以将此方法添加为internal
中的Kotlin或protected
中的Java,而不是public
,并且只有在同一个包中的测试或类才能访问该方法。
爪哇:
@VisibleForTesting
protected Address address() {
return mAddress;
}
科特林:
@VisibleForTesting
internal fun address(): Address {
return address;
}
发布于 2015-10-22 11:19:48
如果测试在相应的测试包中(与生产代码相同的包名),则使方法包-私有,测试将能够看到它。
@VisibleForTesting
Address getAddress() {
return mAddress;
}
还可以考虑重构代码,这样就不需要显式地测试私有方法,尝试测试公共接口的行为。难以测试的代码表明可以对生产代码进行改进。
注释的要点是,它的约定可以用于静态代码分析,而注释不能。
发布于 2018-09-25 11:41:50
如果不是用于测试,则可以选择指定可见性;这允许工具从生产代码中捕获意外访问。
示例:
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
public Address getAddress()
https://stackoverflow.com/questions/33267820
复制相似问题