java - 如何使用 JUnit 和 Mockito 测试从数据库获取数据的服务

标签 java spring-boot junit mockito

我编写了一个从数据库获取数据的java服务:

public List<Operation> listOperations(String code){

//some business logic...

}

我使用数据库中的代码手动测试了该服务 listOperations("CEA1"); 它工作正常,并返回给我一个包含 3 个操作对象的列表(与我的结果相同)数据库)。

现在我想使用 Mockito 和 JUnit 测试我的服务,但我是单元测试的初学者(但我知道单元测试、模拟的概念是什么......),

这是我未完成的测试课:

@RunWith(MockitoJUnitRunner.class)
public class MyserviceTest {

    @Mock
    private OperationRepository  operationRepositoryMock;


    @InjectMocks
    private BanqueServiceImpl banqueServiceImpl;

    @Before
    public void setup() {
      MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testListOfOperation(){

        String code = "CEA1";

        //to check if my service is working good ,the code 'CEA1' should return a list with 3 Operation object
        when(operationRepositoryMock.listOperations(code)). // i dont know how to mock the result


boolean result = banqueServiceImpl.listOperations(code); // i don't know how to assert that the service return a list that contains 3 Operation object

        //assertTrue(result);
    }

请任何人都可以帮助我完成我的测试代码,请注意我正在一个 Spring Boot 项目中工作。

问候!

最佳答案

首先准备好你的操作 list

Operation sampleOperation = new Operation();
List<Operation> operationList = new ArrayList<Operation>();
operationList.add(sampleOperation);

现在,当调用 listOperations() 方法时,使用 mockito 返回 operationList

when(operationRepositoryMock.listOperations(eq("CEA1"))).thenReturn(operationList);

现在您可以使用断言来验证列表的大小或验证列表的内容

assertThat("size is equal to 1", banqueServiceImpl.listOperations(code).size(), is(1));

关于java - 如何使用 JUnit 和 Mockito 测试从数据库获取数据的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45826001/

相关文章:

java - 用户定义的 CORBA 异常在编译后给我错误

java - 工厂类相对于其他多态性的好处

java - 通过 contentobserver 添加/删除/编辑联系人时通知我的应用程序

java - MongoDB 文档的 @Id 是 HashMap 的属性?

spring-boot - 带有 primefaces 的 spring boot 给出错误 : java. lang.NoClassDefFoundError: org/springframework/core/log/LogMessage

java - 文件中的 JUnit 测试

java - 在 Eclipse 中,如何多次运行 JUnit 测试用例

java - 使用 Guice Servlet 测试项目 : How to bind out-of-scope RequestScoped instances?

java - 如何使用 Canvas 显示所有尺寸的图像

java - Spring Boot 无法处理自定义 JPA 请求