Динамическое тестирование тестовых данных из файлов (xml, json, csv, txt) с использованием Junit и Mockito в проекте gradle

В настоящее время я связан с задачей, связанной с Junit и mockito.

Текущий статус: Один из моих коллег разработал несколько тестовых примеров с использованием Junit, Mockito и Gradle. Теперь, разрабатывая код, то, что он сделал при тестировании условий, он передал значения как жестко запрограммированные, но теперь есть новый запрос на изменение (CR)

Предположение : Мы предполагаем, что все жестко закодированные значения будут храниться в некоторой папке ресурсов. Теперь эта папка ресурсов будет содержать файлы любого типа, потому что данные могут быть в формате Json, Xml, CSv, txt или что-то еще.

Требование: Мы хотели прочитать эти данные из файла, который может быть любого типа (Json, Xml, CSV, txt), проанализировать его, а затем нам нужно добавить эти данные с помощью аннотаций без использования геттер-сеттера там, где мы используем хард- закодированные значения только для того, чтобы скрыть жестко запрограммированные значения, а затем запустить тестовые примеры с использованием динамических значений?

Что нужно сделать, чтобы прочитать данные из файла, проанализировать эти данные в соответствии с типом данных, а затем с помощью аннотаций получить значения, а не использовать геттер-сеттер?

Если бы я хотел прочитать тестовые данные из JSON или XML, а не из файла csv, какие аннотации можно использовать с JSON или XML для чтения данных, а затем их анализа и последующего тестирования с помощью junit?

user11222109 19.03.2019 06:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
1 615
1

Ответы 1

В JUnit5 вы можете запускать параметризованные тесты с CSV-источник. Вы можете увидеть пример со встроенными значениями csv:

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

class PriceCalculatorTest {

  PriceCalculator classUnderTest;

  @BeforeEach
  void setUp() throws Exception {
    classUnderTest = new PriceCalculator();
  }

  @ParameterizedTest
  @CsvSource({"0.0, 13", "5.0, 14", "5.0,26", "15.0,27", "15.0,64", "10.0,65"})
  void testGetPrice(double expected, int age) {
    assertEquals(expected, classUnderTest.getPrice(age), 0.01D);
  }
}

Если вы хотите использовать внешний файл данных, для этого есть немного другой синтаксис:

@CsvFileSource(resources = "/two-column.csv", numLinesToSkip = 1)

Предполагается, что вы используете CSV-файл с заголовками в первой строке. Если вы хотите использовать другой формат файла, вам нужно реализовать свой собственный ArgumentsProvider.

Другие вопросы по теме