Junit 및 mockito로 Sum Double 값을 테스트하는 방법은 무엇입니까?

Lv007


매개 변수에 따라 데이터의 합계 값을 얻을 수있는 Java, Spring Boot 컨트롤러 내에 함수를 만들었습니다. 이것은 훌륭하게 작동합니다. 그러나 Junit 및 Mockito로이 기능을 테스트하는 가장 좋은 방법이 무엇인지 이해하는 데 어려움이 있습니까? 아직까지는 특정 배열 필드의 값을 반환하는 테스트 함수를 만들었습니다. 주어진 serviceID에 따라 합산되는 .thenReturn () 내의 값을 어떻게 반환 할 수 있습니까? 다른 유용한 게시물에 대한 도움이나 제안은 관련성이 없거나 잘못된 장소를 찾고 있기 때문에 감사하겠습니다. 감사



아래에서 내 컨트롤러 내에있는 내 기능을 보여주었습니다.

@GetMapping("/orders/test/{serviceId}")
public Double findRevenueByService(@PathVariable Long serviceId){
    log.info("Start of findRevenueByService method {}", serviceId);
    return repository.findPaymentRevenue(serviceId);
}

저장소 내 쿼리

@Query("select SUM(o.amount) from ORDERS o where o.serviceId = :serviceId")
Double findPaymentRevenue(@Param("serviceId") Long serviceId);

TestController

package PPBackend.controller;

import PPBackend.domain.Order;
import PPBackend.repository.OrderRepository;

import lombok.extern.slf4j.Slf4j;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;


import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import java.time.LocalDateTime;
import java.util.ArrayList;

import java.util.List;

import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;

@Slf4j
public class OrdersControllerTest {    
    @InjectMocks
    private OrdersController controller;    
    private MockMvc mockMvc;    
    @Mock
    private OrderRepository repository;    
    private List<Order> orders = new ArrayList<>();    
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        this.mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
        orders.add(new Order(1L,1L,10.00, 50.00,LocalDateTime.now(),LocalDateTime.now()));
        orders.add(new Order(2L,2L,20.00, 50.00,LocalDateTime.now(),LocalDateTime.now()));
        orders.add(new Order(3L,1L,30.00, 50.00,LocalDateTime.now(),LocalDateTime.now()));
        orders.add(new Order(4L,3L,40.00, 50.00,LocalDateTime.now(),LocalDateTime.now()));
        orders.add(new Order(5L,1L,50.00, 50.00,LocalDateTime.now(),LocalDateTime.now()));
    }

    @After
    public void tearDown() {
        orders = new ArrayList<>();
    }

    @Test
    public void findRevenueByService() throws Exception {
        final Long serviceId = 1L;
        when(repository.findPaymentRevenue(serviceId)).thenReturn(orders.get(0).getAmount());
        this.mockMvc.perform(get("/api/test/" + serviceId)).andExpect(status().isOk())
                .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
                .andExpect(jsonPath("$").isNotEmpty())
                .andExpect(jsonPath("$").value(10.00))
                .andExpect(status().isOk());
    }
}

도메인 개체

private Long id;
private Long serviceId;
private Double amount;
private Double credit;
private LocalDateTime created;
private LocalDateTime lastEdited;
Lv007

Java8 을 사용하여 해결했습니다 . 목록에있는 개체의 특정 필드에서 가져온 값을 참조로, 약간 수정하는 데 필요함

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JUnit 테스트에서 Mockito를 사용하는 방법은 무엇입니까?

분류에서Dev

JUnit5로 OpenEJB에서 EJB Bean을 테스트하는 방법은 무엇입니까?

분류에서Dev

Java 언어로 int, double 및 String 연속을 입력하는 방법은 무엇입니까?

분류에서Dev

junit으로 Android sqlite를 테스트하는 방법은 무엇입니까?

분류에서Dev

JUnit 테스트를 별도로 시작하는 방법은 무엇입니까?

분류에서Dev

개체 값을 double로 변환하는 방법은 무엇입니까?

분류에서Dev

@RunWith 및 @ContextConfiguration으로 주석이 달린 jUnit 테스트에서 Spring 컨텍스트에 액세스하는 방법은 무엇입니까?

분류에서Dev

long to string 및 string을 double 변환으로 깔끔하게 수정하는 방법은 무엇입니까?

분류에서Dev

DecimalFormatSymbols 및 통화로 double 형식을 지정하는 방법은 무엇입니까?

분류에서Dev

Jest 및 react-testing-library로 react-dropzone을 테스트하는 방법은 무엇입니까?

분류에서Dev

jquery .slideDown () 및 slideUp ()을 코드로 테스트하는 방법은 무엇입니까?

분류에서Dev

pandas resample (). mean () 및 resample (). sum () 동안 nans로 계산을 비활성화하는 방법은 무엇입니까?

분류에서Dev

Groovy, JUnit 및 Maven을 사용한 단위 테스트에서 예외를 "예상"한다고 선언하는 방법은 무엇입니까?

분류에서Dev

java에서 queue <double []>을 double [] []로 변환하는 방법은 무엇입니까?

분류에서Dev

double의 배열을 다른 double로 곱하는 방법은 무엇입니까?

분류에서Dev

32 비트 프로세서가 64 비트 double 값을 처리하는 방법은 무엇입니까?

분류에서Dev

Codility (및 기타 사이트) 테스트의 입력 값을 확인하는 방법은 무엇입니까?

분류에서Dev

JUnit 및 Mockito로 사용자 지정 JsonSerializer를 테스트하는 방법

분류에서Dev

역할 및 권한을 테스트하는 방법은 무엇입니까?

분류에서Dev

높은 값으로 double 변환을 방지하는 방법은 무엇입니까?

분류에서Dev

JUnit 테스트 케이스 실행에 글로벌 타임 아웃을 활성화하는 방법은 무엇입니까?

분류에서Dev

정장을 만들지 않고 Maven에서 특정 순서로 Junit 테스트 클래스를 실행하는 방법은 무엇입니까?

분류에서Dev

double을 int로 변환하고 swiftUI의 텍스트에 표시하는 방법은 무엇입니까?

분류에서Dev

다른 JUnit 테스트 세트에 여러 설정을하는 방법은 무엇입니까?

분류에서Dev

로깅을 테스트하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

jUnit을 사용하여 이미 처리 된 예외를 테스트하는 방법은 무엇입니까?

분류에서Dev

Scala- 케이스 클래스에서 GroupBy 및 Sum을 수행하는 방법은 무엇입니까?

분류에서Dev

kivy 버튼의 ID 및 텍스트 값을 문자열로 얻는 방법은 무엇입니까?

분류에서Dev

Mockito를 사용하여 Robospice 및 Retrofit과 함께 API를 테스트하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    JUnit 테스트에서 Mockito를 사용하는 방법은 무엇입니까?

  2. 2

    JUnit5로 OpenEJB에서 EJB Bean을 테스트하는 방법은 무엇입니까?

  3. 3

    Java 언어로 int, double 및 String 연속을 입력하는 방법은 무엇입니까?

  4. 4

    junit으로 Android sqlite를 테스트하는 방법은 무엇입니까?

  5. 5

    JUnit 테스트를 별도로 시작하는 방법은 무엇입니까?

  6. 6

    개체 값을 double로 변환하는 방법은 무엇입니까?

  7. 7

    @RunWith 및 @ContextConfiguration으로 주석이 달린 jUnit 테스트에서 Spring 컨텍스트에 액세스하는 방법은 무엇입니까?

  8. 8

    long to string 및 string을 double 변환으로 깔끔하게 수정하는 방법은 무엇입니까?

  9. 9

    DecimalFormatSymbols 및 통화로 double 형식을 지정하는 방법은 무엇입니까?

  10. 10

    Jest 및 react-testing-library로 react-dropzone을 테스트하는 방법은 무엇입니까?

  11. 11

    jquery .slideDown () 및 slideUp ()을 코드로 테스트하는 방법은 무엇입니까?

  12. 12

    pandas resample (). mean () 및 resample (). sum () 동안 nans로 계산을 비활성화하는 방법은 무엇입니까?

  13. 13

    Groovy, JUnit 및 Maven을 사용한 단위 테스트에서 예외를 "예상"한다고 선언하는 방법은 무엇입니까?

  14. 14

    java에서 queue <double []>을 double [] []로 변환하는 방법은 무엇입니까?

  15. 15

    double의 배열을 다른 double로 곱하는 방법은 무엇입니까?

  16. 16

    32 비트 프로세서가 64 비트 double 값을 처리하는 방법은 무엇입니까?

  17. 17

    Codility (및 기타 사이트) 테스트의 입력 값을 확인하는 방법은 무엇입니까?

  18. 18

    JUnit 및 Mockito로 사용자 지정 JsonSerializer를 테스트하는 방법

  19. 19

    역할 및 권한을 테스트하는 방법은 무엇입니까?

  20. 20

    높은 값으로 double 변환을 방지하는 방법은 무엇입니까?

  21. 21

    JUnit 테스트 케이스 실행에 글로벌 타임 아웃을 활성화하는 방법은 무엇입니까?

  22. 22

    정장을 만들지 않고 Maven에서 특정 순서로 Junit 테스트 클래스를 실행하는 방법은 무엇입니까?

  23. 23

    double을 int로 변환하고 swiftUI의 텍스트에 표시하는 방법은 무엇입니까?

  24. 24

    다른 JUnit 테스트 세트에 여러 설정을하는 방법은 무엇입니까?

  25. 25

    로깅을 테스트하는 가장 좋은 방법은 무엇입니까?

  26. 26

    jUnit을 사용하여 이미 처리 된 예외를 테스트하는 방법은 무엇입니까?

  27. 27

    Scala- 케이스 클래스에서 GroupBy 및 Sum을 수행하는 방법은 무엇입니까?

  28. 28

    kivy 버튼의 ID 및 텍스트 값을 문자열로 얻는 방법은 무엇입니까?

  29. 29

    Mockito를 사용하여 Robospice 및 Retrofit과 함께 API를 테스트하는 방법은 무엇입니까?

뜨겁다태그

보관