Reemplazar un texto en Apache POI XWPF no funciona

Actualmente estoy tratando de trabajar en el código mencionado en una publicación anterior llamadaReemplazar un texto en Apache POI XWPF.

He intentado lo siguiente y funciona, pero no sé si me falta algo. Cuando ejecuto el código, el texto no se reemplaza sino que se agrega al final de lo que se buscó. Por ejemplo, he creado un documento de Word básico e ingresé el texto "prueba". En el siguiente código, cuando lo ejecuto, finalmente obtengo el nuevo documento con el texto "testDOG".

Tuve que cambiar el código original de String text = r.getText (0) a String text = r.toString () porque seguía obteniendo un NullError mientras ejecutaba el código.

import java.io.*;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;


public class testPOI {

    public static void main(String[] args) throws Exception{

    String filepath = "F:\\MASTER_DOC.docx";
    String outpath = "F:\\Test.docx";

    XWPFDocument doc = new XWPFDocument(OPCPackage.open(filepath));
    for (XWPFParagraph p : doc.getParagraphs()){
        for (XWPFRun r : p.getRuns()){
            String text = r.toString();
            if(text.contains("test")) {
                text = text.replace("test", "DOG");
                r.setText(text);
            }
        }
    }
   doc.write(new FileOutputStream(outpath));
}

EDITAR: Gracias por su ayuda a todos. Hojeé y encontré una solución enReemplazar el valor de columna de la tabla en Apache POI

Respuestas a la pregunta(5)

Su respuesta a la pregunta