В настоящее время я связан с задачей, связанной с Junit и mockito.
Текущий статус: Один из моих коллег разработал несколько тестовых примеров с использованием Junit, Mockito и Gradle. Теперь, разрабатывая код, то, что он сделал при тестировании условий, он передал значения как жестко запрограммированные, но теперь есть новый запрос на изменение (CR)
Предположение : Мы предполагаем, что все жестко закодированные значения будут храниться в некоторой папке ресурсов. Теперь эта папка ресурсов будет содержать файлы любого типа, потому что данные могут быть в формате Json, Xml, CSv, txt или что-то еще.
Требование: Мы хотели прочитать эти данные из файла, который может быть любого типа (Json, Xml, CSV, txt), проанализировать его, а затем нам нужно добавить эти данные с помощью аннотаций без использования геттер-сеттера там, где мы используем хард- закодированные значения только для того, чтобы скрыть жестко запрограммированные значения, а затем запустить тестовые примеры с использованием динамических значений?
Что нужно сделать, чтобы прочитать данные из файла, проанализировать эти данные в соответствии с типом данных, а затем с помощью аннотаций получить значения, а не использовать геттер-сеттер?




В 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.
Если бы я хотел прочитать тестовые данные из JSON или XML, а не из файла csv, какие аннотации можно использовать с JSON или XML для чтения данных, а затем их анализа и последующего тестирования с помощью junit?