根据我的理解,这些注释用于带有访问修饰符的方法,该修饰符允许从另一个类调用方法以进行单元测试
@VisibleForTesting - com.google.common.annotations.VisibleForTesting
@TestOnly - org.jetbrains.annotations.TestOnly
最佳答案
第一个很大的区别显然是由不同的项目提供的。
@VisibleForTesting
是 Google Guava libraries 的一部分并且 @TestOnly
是 JetBrains annotations 的一部分其中与 IntelliJ IDEA 的制造商 JetBrains 等相关联。
比较两者的 JavaDoc 表明它们服务于基本相同的目标:@TestOnly
和 @VisibleForTesting
.
请注意,两个 注释的文档都包含一条有效警告您注释本身不会阻止生产代码调用注释方法的注释。 JetBrains 建议使用支持该注释的静态检查工具(其中一个可能内置于 IntelliJ IDEA 中),而 Guava 建议使用带有明确禁止 API 列表的外部检查工具。
tl;dr 它们实际上表示同一件事。使用哪一个的决定主要取决于您使用哪些工具来对它们进行操作以及它们支持哪些工具。已经使用其中一个包中的其他注释或类是选择一个而不是另一个的另一个原因。
关于java - 单元测试中@TestOnly和@VisibleForTesting有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67207970/