java中inputhelperjava是什么意思思

回到监狱般的实验室,用一台4年前的废电脑,装一个ubuntu来玩玩吧。

# 预发布软件源,不建议启用

消息非常明显:你不能模拟非可视类和 final 类。简短回答:创建匿名的anonymous类,而对这个类进行收费,而不是 !

长答案,让我们来解释 !

如果编译器看到匿名类,则实例化一个匿名类,它将创建一个的final 和的包可见类。因这里,匿名类通过标准的均值 换句话说,并不是mockable的。

模拟匿名类:可能但如果不进行欺骗,则很脆弱

假设你想通过Powermock模拟这个匿名类。当前编译器使用以下方案编译匿名类:

模拟匿名类可能但脆弱的( 我的意思是) 所以假定匿名类是声明的第十一个类,它将显示为

因此,你可以为测试匿名类做好准备:

这里代码将编译,但最终将报告为你的IDE的错误。IDE可能不了解 InputHelper$11.classIntelliJ不使用编译的类来检查代码报表。

另外,匿名类命名实际上依赖于声明的顺序是一个问题,当有人添加了另一个匿名类时。匿名类要保持匿名,如果编译人员决定一天使用字母或者随机标识符,则为匿名类。

在中模拟匿名类是可能的,但是很脆弱,不要在实际项目中做 !

EDITED: 编译器有不同的编号方案,它总是使用一个位数:

而且我不认为JLS清楚地指定了编译器应该如何处理匿名类。

我更愿意编写下面的代码:

一个将使用命名类的输入 helper,我不使用接口 NAME 来清楚该过滤器的意图。

现在,你可以编写这样的测试:

BufferedInputStream,那么最终可以避免powermock的测试。通常使用Powermock意味着设计出了问题。我认为Powermock对于传统的软件很好,但是在设计新的代码时可能会盲目开发,因为他们缺少oop部分的优点,我甚至说他们正在设计遗留代码。

我要回帖

更多关于 java是什么意思 的文章

 

随机推荐