【Guava】对Guava类库的注释类型 VisibleForTesting的理解

159 篇文章 455 订阅 ¥39.90 ¥99.00
本文探讨了Guava库中的VisibleForTesting注解,用于标记仅在测试代码中使用的程序元素。虽然它不会改变访问权限,但可以作为提示。通过一个测试私有方法的例子,展示了如何使用该注解,同时提到了在Spring Boot项目中可能存在的限制和挑战。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1.背景

有一次问同事:除了用JAVA Reflection 来测试私有方法外,还有什么好的方法可以更简单的测试私有方法。

同事回答,可以用Guava的VisibleForTesting。于是看了看这个注释的用法。

这个注释的接口定义如下:

@GwtCompatible
public @interface VisibleForTesting

Annotates a program element that exists, or is more widely visible than otherwise necessary, only for use in test code.

从字面上可以被这样理解: 注释一个已经存在的程序元素或者所注释的元素被给于它所必须的更宽松的 可见性,仅仅被使用在测试代码中。

我们通过一个测试私有方法的例子来看看这个注释的使用:

1 public class PrivateData {
2     @VisibleForTesting
3      /*private*/ void testPrivate(int pr){
4         System.out.print(pr);
5       }
6 }

下面是测试类:

1 public class PrivateDataTest {
2     @Test
3     public void testPrivate() throws Exception {
4         PrivateData pm = new PrivateData();
5         pm.testPrivate(1);
6     }
7 
8 }

通过上面的代码看出, 被测试的testPrivate方法的可见性还是被改成Protected。也就是,VisibleForTesting只是一个注释,一个元数据metadata,它并没有进入程序逻辑,也没有被转化成字节码byte code 从而被JVM执行。

笔者猜测可能是Guava 的 程序员犯懒了, 即不愿意在unit test里直接利用Reflection来测试私有方法。也没有把私有方法写入另一个类中。所以设计了VisibleForTesting的注解来提醒其他程序员: 这里为了测试私有方法把私有方法改成了Protected(受保护的)并放宽了访问限制。

可是就JAVA本身而言,只有通过Reflection才能真正测试私有方法。

但是我测试的时候发现在spring boot项目种不好用,没法使用

【Spring】Spring boot 如何进行私有方法测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值