Java 为什么在IntelliJ';s";运行“;,但当我使用Maven时就不是了;测试;?

Java 为什么在IntelliJ';s";运行“;,但当我使用Maven时就不是了;测试;?,java,outputstream,fileoutputstream,java-6,xmlstreamwriter,Java,Outputstream,Fileoutputstream,Java 6,Xmlstreamwriter,在我的应用程序中,当我运行“mvn clean test”时,OutputStream没有向文件写入任何内容,但当我在IntelliJ中右键单击run testWritingToFile()运行它时,它工作正常并输出到文件 我有以下测试: @Test public void testWritingToFile() throws Exception { File fileXml = new File("xmltest.xml"); OutputStream outputStream

在我的应用程序中,当我运行“mvn clean test”时,
OutputStream
没有向文件写入任何内容,但当我在IntelliJ中右键单击run testWritingToFile()运行它时,它工作正常并输出到文件

我有以下测试:

@Test
public void testWritingToFile() throws Exception {
    File fileXml = new File("xmltest.xml");
    OutputStream outputStream = new FileOutputStream(fileXml);
    XmlStreamWriting xmlStreamWriting = new XmlStreamWriting(outputStream);

    xmlStreamWriting.writeXmlToStream();

    outputStream.close();

}
下面是我在测试中调用的类(XmlStreamWriting.java):

下面是它扩展的抽象类(XmlStreamWritingBase.java):

如果有必要的话,我正在使用jrockit jdk 1.6.029。IntelliJ和Maven都被设置为运行JDK

是否必须将
OutputStream
直接传递给每个方法?为什么
writeXmlToStream()
方法不起作用

编辑:也只是为了验证流在这两种情况下都能工作,我将测试更改为此,当我从maven运行时,Test1和Test2之间没有内容,但当我使用IntelliJ运行时,xml显示在两个字符串之间:

public void testWritingToFile() throws Exception {
    File fileXml = new File("xmltest.xml");
    OutputStream outputStream = new FileOutputStream(fileXml);

    outputStream.write("Test1".getBytes());

    XmlStreamWriting xmlStreamWriting = new XmlStreamWriting(outputStream);

    xmlStreamWriting.writeXmlToStream();

    outputStream.write("Test2".getBytes());

    outputStream.close();
}

maven的输出是“
Test1Test2
”,IntelliJ的输出是“
test1这是一个测试。Test2

解决方案是我没有设置编码类型。或者他们有些不同。当我将编码设置为UTF-8时,该文件被写入到刚刚好的状态:

xmlOutputFactory.createXMLStreamWriter(this.getOutputStream(), "UTF-8");

我发现这一点是因为当我在IntelliJ中设置一个maven目标时,开关
-Dfile.encoding=UTF-8
将附加到mvn命令的末尾,然后测试将正确构建XML文件。

定义“不工作”。澄清了我的问题。当我说不行的时候,我的意思是xml文件是空的。在maven compile和maven surefire步骤中是否记录了任何错误或警告?是否确定maven不仅仅是将文件写入文件系统中您不期望的位置?您的类有一个严重的设计错误:如果在调用getXmlStreamWriter()后设置输出流,写入程序仍然使用旧的输出流。如果您在createXMLStreamWriter()中不知何故犯了相同的错误,则可以解释这种差异。
public void testWritingToFile() throws Exception {
    File fileXml = new File("xmltest.xml");
    OutputStream outputStream = new FileOutputStream(fileXml);

    outputStream.write("Test1".getBytes());

    XmlStreamWriting xmlStreamWriting = new XmlStreamWriting(outputStream);

    xmlStreamWriting.writeXmlToStream();

    outputStream.write("Test2".getBytes());

    outputStream.close();
}
xmlOutputFactory.createXMLStreamWriter(this.getOutputStream(), "UTF-8");