首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mockito Junit 5抛出检查异常不起作用

在软件开发中,Mockito和JUnit是两个常用的Java测试框架。Mockito用于模拟和跟踪对象的行为,而JUnit用于编写和执行单元测试。在JUnit 5中,如果我们想测试的方法抛出了检查异常,我们可以使用assertThrows()方法来验证是否抛出了预期的异常。

assertThrows()方法接受两个参数:预期的异常类和执行抛出异常代码的Lambda表达式。它会执行Lambda表达式,并捕获其中抛出的异常。然后,它会验证抛出的异常是否与预期的异常类相匹配,如果匹配则测试通过,否则测试失败。

以下是使用Mockito和JUnit 5来验证方法是否抛出检查异常的示例代码:

代码语言:txt
复制
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.*;

public class MyServiceTest {

    @Test
    public void testDoSomething() {
        MyService service = mock(MyService.class);
        when(service.doSomething()).thenThrow(new MyException("Some error message"));

        assertThrows(MyException.class, () -> service.doSomething());
    }
}

在这个示例中,我们使用Mockito创建了一个MyService的模拟对象,并指定当调用doSomething()方法时抛出一个自定义的MyException异常。然后,我们使用assertThrows()方法来验证调用doSomething()方法是否会抛出MyException异常。

通过这种方式,我们可以测试和验证方法是否正确地抛出了我们所期望的检查异常,从而保证代码的健壮性和可靠性。

对于使用Mockito和JUnit进行单元测试时抛出检查异常不起作用的情况,可能是以下几个原因导致的:

  1. 异常没有正确地被抛出:在使用Mockito时,我们需要通过when()方法指定当调用特定方法时抛出异常。确保在测试代码中正确地配置了Mockito的模拟对象以及异常的抛出。
  2. 使用的JUnit版本不支持assertThrows()方法:assertThrows()方法是JUnit 5中的新功能,如果你使用的是较旧的JUnit版本,则可能无法使用该方法。请确保你的项目依赖中包含JUnit 5,并使用适用于JUnit 5的JUnit Jupiter引擎运行测试。
  3. 代码中存在错误:检查一下测试代码是否存在其他错误或逻辑问题。仔细查看测试代码中的语法和逻辑,确保没有其他因素导致异常无法正确抛出。

总结:Mockito和JUnit是非常强大的测试工具,可以帮助我们编写高质量的单元测试。通过正确地配置Mockito的模拟对象和使用JUnit 5的assertThrows()方法,我们可以验证方法是否正确地抛出了检查异常。及时发现和解决异常问题,可以提高代码的质量和可维护性。

关于Mockito和JUnit的更多信息和用法,你可以参考腾讯云的Java开发人员指南中的相关章节:

请注意,以上提到的腾讯云链接仅作为示例,你可以根据自己的需求使用任何其他云服务商或产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

异常1.异常简介2.捕获异常3.异常的传递4.抛出自定义的异常5.异常处理中抛出异常

说明: 打开一个不存在的文件123.txt,当找不到123.txt文件时,就会抛出给我们一个IOError类型的错误,No such file or directory:123.txt(没有123.txt...5.捕获所有异常 ? ? 6.else 在if中,它的作用是当条件不满足时执行的实行;同样在try...except...中也是如此,即如果没有捕获到异常,那么就执行else中的事情 ?...,并没有返回到函数test1中进行执行,而是在函数test3中继续执行 4.抛出自定义的异常 你可以用raise语句来引发一个异常。...如果在子类中重写了父类的__init__方法,即意味着父类中的很多初始化工作没有做,这样就不保证程序的稳定了,所以在以后的开发中,如果重写了父类的__init__方法,最好是先调用父类的这个方法,然后再添加自己的功能 5....异常处理中抛出异常 ?

1.8K30

单测实例-void方法验证

这个方法首先检查了待更新的测试项目是否在当前workspace下存在重名,如果没有重名的话,则通过projectMapper对该测试项目进行写库更新其信息。...我们编写两个用例 1)存在重名,方法抛出异常 2)检查通过,项目更新成功 存在重名,方法抛出异常 首先来看一下第一个用例 @Test public void updateProjectServiceNameShouldNotDuplicate...检查通过,项目更新成功 接下来,来看下如何完成测试项目更新的测试用例 package io.metersphere.service; import io.metersphere.base.domain.Project...; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.*; import org.mockito.junit.jupiter.MockitoExtension...; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.ArrayList

3.3K10
  • 单元测试

    避免为单元测试写测试,单元测试必须非常简单 单元测试不能相互依赖,可以独立运行 除了必要的覆盖测试用例,还要注意一些临界值 比如:null、0、“” 等 JUnit 5的使用: maven依赖: <!...Arguments.arguments(2, 1, 1)); } @MethodSource 使用方法传参数 @ValueSource 直接将参数显示 @ValueSource(ints = { -1, -5,...常用 API : verify() 校验方法是否被调用 doThrow() 模拟抛出异常 doThrow(new RuntimeException()).when(event).getName...setName(anyString()); event.setName("name"); 当调用 event.setName("name") 只有参数是“name”时通过,其他值抛出异常...RuntimeException()).when(event).setName("name"); event.setName("name"); event.setName("name"); 第一次什么都不做,第二次抛出异常

    1.7K30

    MeterSphere单元测试-Mockito-Inline出场

    如果大于则表明存在重名,程序抛出异常。 测试用例-第一版 因此,我们设计一个测试用例,来模拟测试计划重名的场景。...Given- 新建测试计划 When- 根据给定测试计划名称查询数据库返回不为空 Then-抛出异常 根据这个场景,我们来编写一下测试用例 package io.metersphere.track.service...org.mockito.junit.jupiter.MockitoExtension; import org.springframework.test.context.junit.jupiter.SpringExtension...SessionUtils.getCurrentWorkspaceId()运行的结果是Null,而andWorkspaceIdEqualTo(String workSpaceId)方法中如果入参为null,则会抛出空指针异常...; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito

    3.3K10

    Java一分钟之-Mockito:模拟对象测试

    本文将深入浅出地介绍Mockito的核心概念、常见问题、易错点以及如何避免这些问题,同时通过实际代码示例加深理解。 Mockito核心概念 1....预期行为(Stubbing) 通过设置预期行为,你可以定义模拟对象在接收到特定方法调用时应如何响应,比如返回特定值或抛出异常。 3....验证(Verification) 验证是在测试结束后检查模拟对象是否如预期那样被调用了正确的方法和次数。 4....解决方案:确保在测试类中正确使用Mockito的初始化代码,如JUnit的@RunWith(MockitoJUnitRunner.class)或手动调用MockitoAnnotations.initMocks...import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito

    28510

    SpringBoot 单元测试利器-Mockito

    Mockito 是一种 Java mock 框架,他主要是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean、模拟方法的返回值、模拟抛出异常...等,在了解 Mockito 的具体用法之前...管理的 bean、模拟方法的返回值、模拟抛出异常...等,他同时也会记录调用这些模拟方法的参数、调用顺序,从而可以校验出这个 mock 对象是否有被正确的顺序调用,以及按照期望的参数被调用 像是 Mockito...在 SpringBoot 单元测试中使用 Mockito 首先在 pom.xml 下新增 spring-boot-starter-test 依赖,该依赖内就有包含了 JUnitMockito <dependency...).print(); userService.print(); //会抛出一个RuntimeException verify 系列方法 检查调用 userService 的 getUserById()...方法 不能 mock final class 因此在写代码时,需要做良好的功能拆分,才能够使用 Mockito 的 mock 技术,帮助我们降低测试时 bean 的耦合度 5.

    2.8K10

    #Android单元测试学习总结「建议收藏」

    函数是为了设置void函数什么也不做 使用`doAnswer()`函数测试void函数的回调 需要使用doReturn函数代替thenReturn的情况 使用`doThrow()`函数来测试void函数抛出异常...官网:https://junit.org/junit4/ 1....通常需要配合一些测试方法来验证某些行为,这些方法称为”打桩方法”(Stub),打桩的意思是针对mock出来的对象进行一些模拟操作,如设置模拟的返回值或抛出异常等。...会抛出异常 mockedList.clear(); } doXXX和thenXXX使用上差不多,一个是调用方法之前设置好返回值,一个是在调用方法之后设置返回值。...:powermock-module-junit4-rule:2.0.2' testImplementation 'org.powermock:powermock-api-mockito2:2.0.2'

    5.1K20
    领券