Java 为什么在IntelliJ';s";运行“;,但当我使用Maven时就不是了;测试;?
在我的应用程序中,当我运行“mvn clean test”时,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
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");