Как написать тестовые примеры загрузки Spring в нескольких файлах для нескольких контроллеров соответственно - PullRequest
0 голосов
/ 05 октября 2018

Я использую JUnit и Mockito для написания тестовых случаев для Spring Boot Application.У меня есть несколько контроллеров (например, для ContractController и CountryCOntroller).Когда я записываю тестовые примеры для обоих из них в одном файле, тестирование проходит, но если я записываю тестовые примеры ContractController в один файл, а другие тестовые примеры контроллера во второй файл, тестовые случаи не выполняются.Можете ли вы дать мне знать, как писать в разных файлах?

Контроллер Контракта TEst

package com.example.demo;

import static org.junit.Assert.*;

import java.util.Collections;
import java.util.Optional;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.skyscreamer.jsonassert.JSONAssert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import com.example.demo.controllers.ContractController;
import com.example.demo.controllers.CountryController;
import com.example.demo.entities.Contract;
import com.example.demo.entities.Country;
import com.example.demo.repositories.ContractRepository;
import com.example.demo.repositories.CountryRepository;

@RunWith(SpringRunner.class)
public class ContractControllerTest {

    @Autowired
    private MockMvc mockMvc;
    @MockBean
    private ContractRepository contractRepository;

    @SuppressWarnings("unchecked")
    @Test
    public void testGetContract() throws Exception {
        System.out.println("contract testing");
        Contract contract = new Contract();
        contract.setContractTypeId(1);
        contract.setContractType("Calibration");
        Mockito.when(this.contractRepository.findAll()).thenReturn((Collections.singletonList(contract)));

        RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/api/contractType").accept(MediaType.APPLICATION_JSON_UTF8);
        MvcResult result = mockMvc.perform(requestBuilder).andReturn();
        System.out.println("result is"+result.getResponse().getContentAsString());
         String expected = "[{id:1,contractType:Calibration}]";
        JSONAssert.assertEquals(expected, result.getResponse().getContentAsString(), false);    
    }
}

Проверка контроллера COuntry

package com.example.demo;
import static org.junit.Assert.*;

import java.util.Collections;
import java.util.List;
import java.util.Optional;

import org.json.JSONObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.skyscreamer.jsonassert.JSONAssert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import com.example.demo.controllers.CountryController;
import com.example.demo.entities.Contract;
import com.example.demo.entities.Country;
import com.example.demo.repositories.ContractRepository;
import com.example.demo.repositories.CountryRepository;


@RunWith(SpringRunner.class)
@WebMvcTest(value = CountryController.class)
public class CountryControllerTest {

    @Autowired
    private MockMvc mockMvc;
    @MockBean
    private CountryRepository countryRepository;

    @MockBean
    private ContractRepository contractRepository;


    @SuppressWarnings("unchecked")
    @Test
    public void testGetCountries() throws Exception {
        System.out.println("mockito testing");
        Country country = new Country();
        country.setId(1);
        country.setCountryName("Afghanistan");
        country.setShortName("AF");
        Mockito.when(this.countryRepository.findAll()).thenReturn((Collections.singletonList(country)));

        RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/api/countries").accept(MediaType.APPLICATION_JSON_UTF8);
        MvcResult result = mockMvc.perform(requestBuilder).andReturn();
        System.out.println("result is"+result.getResponse().getContentAsString());
         String expected = "[{id:1,shortName:AF,countryName:Afghanistan}]";
        JSONAssert.assertEquals(expected, result.getResponse().getContentAsString(), false);    
    }
...