Блогер Тихие слова ведут вас Go to New World. ✍ Персональная домашняя страница—— тихие слова Блог 👦🏻 《java Полная коллекция вопросов для интервью》 🍩Остальное поколение очень талантливо и мало знает. В скопированной работе могут быть неточности, поэтому прошу читателей меня поправить. ☕🍭 «MYSQL от начального уровня до профессионального»База данных — это одна из основ, которую должны знать разработчики ~ 🪁 Я надеюсь, что эта статья поможет вам. Даже если она поверхностна, сложна и глубока, я все же готов добавить некоторую скудную помощь. Он не идеален, поэтому, пожалуйста, критикуйте и вносите исправления для улучшения. ! 💻⌨
В этой статье мы подробно рассмотрим, как проводить модульное тестирование в Spring Boot, а также некоторые распространенные инструменты и методы. Мы сосредоточим внимание на следующих аспектах:
Давайте рассмотрим их один за другим!
Сначала давайте посмотрим, как действовать Service Модульное тестирование уровня. существовать Spring Boot В классы модульного тестирования обычно расположены в src/test/java
каталог. Вы можете создать тестовый класс вручную или, если вы используете ИДЕЯ, вы можете использовать сочетания клавиш ⇧⌘T
(MAC) или Ctrl+Shift+T
(Windows) для автоматического создания тестовых классов.
После создания тестового класса вы можете написать тестовые методы. Вот пример:
package com.dudu.service;
import com.dudu.domain.LearnResource;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.hamcrest.CoreMatchers.*;
@RunWith(SpringRunner.class)
@SpringBootTest
public class LearnServiceTest {
@Autowired
private LearnService learnService;
@Test
public void getLearn(){
LearnResource learnResource = learnService.selectByKey(1001L);
Assert.assertThat(learnResource.getAuthor(), is("тест"));
}
}
Приведенный выше код демонстрирует простой метод написания модульного теста. Вверху просто добавьте @RunWith(SpringRunner.class)
и @SpringBootTest
Просто аннотируйте. Если вы хотите запустить тест, наведите указатель мыши на соответствующий метод тестирования, щелкните правой кнопкой мыши и выберите «Выполнить».
После тестирования уровня сервиса давайте посмотрим, как выполнить модульное тестирование уровня контроллера. Часто бывает необходимо использовать MockMvc для имитации HTTP-запросов, чтобы можно было протестировать интерфейс без запуска всего приложения.
Сначала создайте тестовый класс для класса Controller:
package com.dudu.controller;
// ...
@RunWith(SpringRunner.class)
@SpringBootTest
public class LearnControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mvc;
private MockHttpSession session;
@Before
public void setupMockMvc(){
mvc = MockMvcBuilders.webAppContextSetup(wac).build();
session = new MockHttpSession();
User user = new User("root", "root");
session.setAttribute("user", user);
}
// ... (Добавлен тестовый вариант использования)
}
В приведенном выше коде мы использовали MockMvcBuilders
Создал MockMvc объект и устанавливает пользователя сеанс, это связано с тем, что перехватчик может проверить, что пользователь вошел в систему.
Далее мы можем написать несколько тестовых примеров. Например, вот тестовый пример для нового урока:
@Test
public void addLearn() throws Exception{
String json = "{\"author\":\"HAHAHAA\",\"title\":\"Spring\",\"url\":\"http://tengj.top/\"}";
mvc.perform(MockMvcRequestBuilders.post("/learn/add")
.accept(MediaType.APPLICATION_JSON_UTF8)
.content(json.getBytes())
.session(session)
)
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print());
}
В приведенном выше коде мы использовали MockMvcRequestBuilders.post()
построил POST запрос, отправил JSON параметры и передать .andExpect()
Чтобы проверить, является ли возвращенный код состояния 200。
assertThat
ИспользованиеJUnit 4.4 объединить Hamcrest Предоставляет новый синтаксис утверждений assertThat
。это позволяет нам пройти Hamcrest Средство сопоставления, предназначенное для выражения объявления ожидаемого значения предыдущей переменной. Вот несколько примеров часто используемых сопоставлений:
equalTo
:Утвердить, что измеренное значение равно ожидаемому значению.。equalToIgnoringCase
:Игнорировать регистр,Утверждают, что измеренное нить равно ожидаемому нить.equalToIgnoringWhiteSpace
:Игнорировать начальные и конечные пробелы,Утверждают, что измеренное нить равно ожидаемому нить.containsString
:Утверждение проверенонить Содержит желаемого ребенканить。Доступно множество других подходящих символов. Подробную информацию можно найти по ссылке в конце статьи.
Если во время модульного тестирования вы не хотите оставлять мусорные данные в базе данных, вы можете включить функцию транзакций и добавить методы или заголовки классов. @Transactional
Просто прокомментируйте:
@Test
@Transactional
public void add(){
LearnResource bean = new LearnResource();
bean.setAuthor("тестроллбэк");
bean.setTitle("Сценарий использования отката");
bean.setUrl("http://tengj.top");
learnService.save(bean);
}
После завершения теста данные будут автоматически отменены, и в базе данных не останется ненужных данных. Если вы хотите отключить откат, просто @Transactional
Добавляйте параметры в аннотации @Rollback(false)
Вот и все.
Если вы используете MySQL База данных, в некоторых случаях даже если она добавлена @Transactional
Аннотации не будут отменены. На данный момент вам необходимо подтвердить, является ли ваш механизм по умолчанию. Инно ДБ. Если нет, вам нужно изменить движок по умолчанию на InnoDB。
В этой статье мы подробно рассмотрим, как Spring Boot в разработке Модульное обучение, а также знакомит с некоторыми часто используемыми инструментами и методами, такими как MockMvc и утверждать это. Заодно мы также обсудили, как это сделать в Модульном Обновление Используйте откат транзакций, чтобы поддерживать чистоту и согласованность базы данных.
Я надеюсь, что эта статья была полезной. Если у вас есть какие-либо вопросы или вам нужны дополнительные объяснения, дайте мне знать.