添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
public void test() { FinalPumpkin pumpkin = mock(FinalPumpkin.class); when(pumpkin.getName()).thenReturn("www.pkslow.com"); Assert.assertEquals("www.pkslow.com", pumpkin.getName());

报错信息如下:

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class com.pkslow.basic.MockitoTest$FinalPumpkin
Mockito cannot mock/spy because :
 - final class

这是因为低版本的 mockito 是不能 mock final 类的。

解决方案:

改变 mockito 的版本,修改maven依赖如下:

<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-inline</artifactId>
  <version>3.3.3</version>
</dependency>

重跑测试,问题解决!

欢迎访问 南瓜慢说 www.pkslow.com 获取更多精彩文章!

欢迎关注微信公众号< 南瓜慢说 >,将持续为你更新...

多读书,多分享;多写作,多整理。

Mockito是很常用的测试工具,使用过程中可能会遇到下面的问题:Mockito cannot mock/spy because : - final class问题重现:引入该依赖到项目的maven配置如下:&lt;dependency&gt; &lt;groupId&gt;org.mockito&lt;/groupId&gt; &lt;artifactId&gt;mockito-core&lt;/artifactId&gt; &lt;version&gt;3.3.3&lt;/versi
在上一篇博文 Mockito final 型和方法的支持(二)中讲到,必须在src/test/resources/ mockito -extensions目录中添加配置文件org. mockito .plugins. Mock Maker来实现 mock final 型和方法。 从 Mockito 2.7.6版本开始,我们可以不再需要添加这个配置文件而直接使用免配置的inline mock making.我们只需...
但是在 Kotlin 开发的Android程序中,使用这两个框架真的如在Java中这么好用吗?事实上,许多Kotlin的Android程序员在使用 Mockito 时会遇到一些问题,例如:虽然这上面的问题,都是有解决方法的,但是显而易见的:任何在 Kotlin 上使用 Mockito 进行单元测试的程序员都会踩坑。为什么不提供一个专门针对于 Kotlin 场景下的单元测试呢? 于是就有了 ​​ mock k​​。 解决上述出现的问题 支持 Kotlin,包括其语法糖 目前官方文档给出了一些存在的问题:Power
Mockito 的模拟/存根介绍 本项目的目的是介绍IntelliJ IDEA中 Mockito 框架和测试模板的较不常见的功能。 我将从模拟/存根的基本内容开始,以便为更高级的内容奠定基础。 他们将帮助我们强调与 Mockito 合作时我们日常遇到的问题,并提供解决方案:-) 未存根方法的默认行为 如果没有存根,则模拟方法将返回零,错误,空集合或空值-取决于所用方法的返回 型是什么。 它可能导致遇到NullPointerException。 java.lang.NullPointerException at domain.InvoiceService.issueInvoice(ItemService.java:10) at domain.a_missing_ mock _for_organisation.ItemServiceTest.shouldIssueAnInvoic
import javax.servlet.http.HttpServletRequest; import org. mockito . Mock ; import org. mockito . Mockito Annotations; import org.testng.Assert; import org.testng.annotations.Before Class ; import org.testng.annotations.Test; import static org. mockito . Mockito .*; public class MyServletTest { @ Mock HttpServletRequest request; @Before Class public void setUp() { Mockito Annotations.init Mock s(this); @Test public void testMyServlet() { // 模拟HttpServletRequest对象的行为 when(request.getParameter("username")).thenReturn("testuser"); // 创建一个MyServlet实例并调用doGet方法 MyServlet servlet = new MyServlet(); servlet.doGet(request, null); // 验证MyServlet的行为是否符合预期 verify(request).getParameter("username"); Assert.assertEquals(servlet.getOutput(), "Hello, testuser!"); 在这个例子中,我们使用@ Mock 注解来创建HttpServletRequest对象的模拟实例。然后,我们使用 Mockito 的when方法来指定当调用request.getParameter("username")方法时应该返回什么值。接着,我们创建一个MyServlet实例并调用doGet方法,最后使用 Mockito 的verify方法来验证request.getParameter("username")是否被调用了一次。最后,我们使用TestNG的Assert 来验证MyServlet的输出是否符合预期。