系统相关
首页 > 系统相关> > java-如何创建内存中的JarFile?

java-如何创建内存中的JarFile?

作者:互联网

我试图写一个像这样的函数:

public Map<String, Document> getTestXml(JarFile jarFile) {
    Map<String, Document> result = Maps.newHashMap();

    Enumeration<JarEntry> jarEntries = jarFile.getEntries();
    while (jarEntries.hasMoreElements()) {
        JarEntry jarEntry = jarEntries.nextElement();

        String name = jarEntry.getName();
        if (name.endsWith(".class") && !name.contains("$")) {
            String testClassName = name.replace(".class", "").replace("/", ".");
            String testXmlFilename = "TEST-" + testClassName + ".xml";

            InputStream testXmlInputStream = testJarFile.getInputStream(
                    testJarFile.getJarEntry(testXmlFilename));

            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            Document testXmlDocument = documentBuilder.parse(testXmlInputStream);

            result.put(testClassName, testXmlDocument);
        }
    }

    return result;
}

我想编写一个单元测试,它实际上并未在文件系统上创建JarFile.我试图寻找如何在内存中创建File对象,但是还没有找到类似的东西.有人有什么建议吗?

解决方法:

代替JarFile,使用JarInputStream.为了进行测试,将JarInputStream挂接到加载有内存jar数据的ByteArrayInputStream上,然后在常规操作中将其挂接到文件的输入流上.

标签:in-memory,unit-testing,jar,java
来源: https://codeday.me/bug/20191102/1991514.html