Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Junit и xml файлы

#java #xml #junit


Допустим, нужно протестировать функции калькулятора. В обычном случае на вход в тестах
подавались бы обычные числа. А как быть, если на вход нужно дать xml-файл?
    


Ответы

Ответ 1



Помещаете тестовый xml файлик как ресурс в тесты и передаете его в тестируемый метод. Файл можно передать как 'inputStream' или как текст.

Ответ 2



Не до конца понятен вопрос, но попробую ответить, так как в своих тестах тоже использую информацию из внешних файлов. Дальше идёт пример кода, который в каждом тестовом методе обеспечивает доступ к XML документу. package ru.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.w3c.dom.Document; import org.xml.sax.SAXException; /** * Тестовое приложение, которые использует в тестах данные из XML документа. */ public class TestApp { private Document document; /** * Метод, который будет вызываться перед каждым тестом в файле. * Загружает и парсит необходимый XML документ. */ @Before public void setUp() throws ParserConfigurationException, SAXException, IOException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); // Здесь можно указывать любой файл в classpath и не только. document = builder.parse(new File("src_test/test.xml")); } /** * Метод, который вызывается после каждого теста. * Здесь можно ничего не делать. */ @After public void tearDown() { document = null; } /** * Сам тест. * Здесь получаем какую-то очень нужную информацию из XML документа. */ @Test public void testDocument() { // Запрашиваем элементы data из XML документа. document.getElementsByTagName("data"); } } В методе testDocument вы можете выбирать из уже загруженного XML документа необходимые для теста данные.

Комментариев нет:

Отправить комментарий