Как обновить XML-файл ресурсов во время выполнения

У меня есть действительный XML-файл, хранящийся в src / main / resources в моем проекте Java, этот файл используется для тестирования некоторых функций.

Я использую Cucumber и REST Assured для проверки HTTP-ответов, которые я получаю, когда недопустимые значения атрибутов содержатся в XML, который помещается в URL-адрес.

В каждом тестовом сценарии я проверяю недопустимое значение атрибута (например, строку вместо int).

На данный момент я конвертирую XML в DOM Document, присваиваю недопустимое значение (строку), затем перезаписываю исходный файл в src / main / resources.

Затем поместите XML в URL. После размещения XML-файла я заново назначаю исходное (действительное) значение XML-файлу и снова перезаписываю файл ресурсов.

Проблема, с которой я сталкиваюсь, заключается в том, что, когда запускается второй сценарий, я думаю, что он использует неправильную версию XML.

Тесты не пройдут, если я не зайду в файл XML и не приму обновления. Есть ли способ обновить этот XML-файл во время выполнения?

//1. Retrieve the XML request file
        String filePath = "C:\\filepath\\src\\main\\resources\\VALID_REQUEST.xml";
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        Document doc = docBuilder.parse(filePath);

        Node attributeToUpdate = doc.getElementsByTagName(fieldNameToUpdate).item(0);

        //2. Extract/Retrieve the sourceID from the XML File, store this (will be re-installed at later stage)
        String originalAttributeValue = attributeToUpdate.getTextContent();
        System.out.println("Source ID before updating file: " + originalAttributeValue);

        //3. Update the sourceID to be equal to the invalid Value which we are testing in this scenario
        attributeToUpdate.setTextContent(invalidValueToUpdate);

        String newValue = attributeToUpdate.getTextContent();
        System.out.println("Source ID after updating file: " + newValue);


        //4. Write the above update to the XML file (in resources)
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);

        StreamResult result = new StreamResult(new File(filePath));
        transformer.transform(source, result);

        BufferedReader br = new BufferedReader(new FileReader(new File(filePath)));
        String line;
        StringBuilder sb = new StringBuilder();

        while((line=br.readLine())!= null){
            sb.append(line.trim());

        }

        theXMLBody = sb.toString();

0 ответов

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