#java #spring-boot #testing #junit
Вопрос:
Когда я создаю свои модульные тесты, я объявляю и инициализирую множество примеров общих объектов, используемых тестами, в одном абстрактном классе, расширенном классами с тестами.
Например, я определяю продукт «телефон» в абстрактном классе и инициализирую его методом «инициализация», аннотированным @Before. Я создаю метод @Test «savePhoneTest» в дочернем классе, который вызывает метод «savePhone» с помощью «телефона». Этот объект всегда повторно инициализируется, и я могу использовать его в других тестах.
Возможно ли сохранить образцы объектов в файле XML / YML? Это хорошая практика? Как я могу извлечь объекты? Я использую пружинный ботинок. Спасибо
Комментарии:
1. Не уверен в XML/YML, но вы можете использовать CSV и различные другие методы при использовании параметризованных тестов JUnit5.
2. Хороший урок/пример baeldung.com/parameterized-tests-junit-5
Ответ №1:
Да, вы можете использовать XML/YAML/JSON
для хранения образцов объектов. Это поможет вам написать меньший код для создания образцов объектов. Кроме того, используя этот подход, ваши тестовые случаи станут более удобными для обслуживания.
Я предпочту JSON
больше XML/YAML
.
Предположим, у вас есть Product
класс, как показано ниже,
Product.java
@Data
@NoArgsConstructor
public class Product {
private int id;
private String name;
private float price;
private String brand;
}
Вы можете создавать JSON file
объекты для хранения. Класс JSON file
for Product
будет выглядеть так:
product.json
{
"id": 1000,
"name": "Smart phone",
"price": 60000.0,
"brand": "SAMSUNG"
}
Всякий раз, когда вам нужен какой-либо объект Product
класса, вы можете создать этот объект с помощью JSON file
. Ниже приведен пример, показывающий, как создать объект java из JSON file
:
InputStream inputStream = Product.class.getResourceAsStream("/product.json");
Product product = new ObjectMapper().readValue(inputStream, Product.class);
Комментарии:
1. Спасибо, это работает! Разве вы не знаете, можно ли загружать образцы объектов, таких как «бобы», из контекста spring? Включает ли spring какую-либо функцию для этого?