最终方法模拟

编程入门 行业动态 更新时间:2024-10-26 20:22:31
本文介绍了最终方法模拟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我需要使用 mockito 用 final 方法来模拟一些类.我写过这样的东西

I need mock some class with final method using mockito. I have wrote something like this

@Test public void test() { B b = mock(B.class); doReturn("bar called").when(b).bar(); assertEquals("must be "overrided"", "bar called", b.bar()); //bla-bla } class B { public final String bar() { return "fail"; } }

但它失败了.我尝试了一些hack",它奏效了.

But it fails. I tried some "hack" and it works.

@Test public void hackTest() { class NewB extends B { public String barForTest() { return bar(); } } NewB b = mock(NewB.class); doReturn("bar called").when(b).barForTest(); assertEquals("must be "overrided"", "bar called", b.barForTest()); }

它有效,但闻起来".

那么,正确的方法在哪里?

So, Where is the right way?

谢谢.

推荐答案

Mockito 不支持模拟 final 方法.

There is no support for mocking final methods in Mockito.

正如 Jon Skeet 评论的那样,您应该寻找一种方法来避免对最终方法的依赖.也就是说,有一些方法可以通过字节码操作(例如使用 PowerMock)

As Jon Skeet commented you should be looking for a way to avoid the dependency on the final method. That said, there are some ways out through bytecode manipulation (e.g. with PowerMock)

Mockito 和 PowerMock 之间的比较会详细解释.

更多推荐

最终方法模拟

本文发布于:2023-10-31 03:57:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1544928.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!