Java`final`类和嘲弄

Hil*_*kus 8 java unit-testing mocking mockito maven

我正在开发一种编程游戏,玩家可以访问抽象类并扩展它以控制机器人的行为.因为它是一个编程游戏,我试图保护我的游戏基础设施,以便玩家不会混淆游戏,而不仅仅是我给他们的课程; 为此,我完成了大部分课程,final但现在我无法在单元测试中模拟它们(mockito + testNG).

所以我想知道,我该如何解决这个问题呢?有没有办法可以让这些类非最终用于测试,然后final在构建周期的后期以某种方式自动" -ize"它们(我正在使用maven,以防它与答案相关).我不想添加另一个外部库或更改我的模拟库.
如果不可能,那么第二个问题final:让课程真正安全吗?我看到一些库可以final从字节码中删除分类器,这让我觉得final如果可以从已经编译的类中删除它可能会没用

bma*_*ies 9

首先,你不能通过宣布"最终"来阻止人们搞乱你的游戏.有反射技巧和整个代码生成库,只是稍微不方便通过它.

所以,输掉决赛,然后你可以使用jmock或任何你喜欢的库来制作模拟.

  • 好吧,那就是我当时的想法:`final`更多的是展示设计师的意图,而不是成为一名安全执法者(即"这个课程并不意味着延伸",而不是"这个课程不能延长").这就是我最初的想法,但后来我开始阅读它并且我一直在寻找"安全"作为其中一个原因.我想我读了不好的消息来源 (2认同)