Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试在本地Windows计算机上运行,但在Linux服务器上失败_Java_Unit Testing_Exception_Jar - Fatal编程技术网

Java 测试在本地Windows计算机上运行,但在Linux服务器上失败

Java 测试在本地Windows计算机上运行,但在Linux服务器上失败,java,unit-testing,exception,jar,Java,Unit Testing,Exception,Jar,我有这个测试: @测试 void testHeader(){ 字符串inputFile=“..\\src\\main\\resources\\binaryFile”; MDHeader addHeader=新的MDHeader(); 试一试( InputStream InputStream=新文件InputStream(inputFile); ) { long fileSize=新文件(inputFile).length(); 字节[]所有字节=新字节[(int)文件大小]; inputStre

我有这个测试:

@测试
void testHeader(){
字符串inputFile=“..\\src\\main\\resources\\binaryFile”;
MDHeader addHeader=新的MDHeader();
试一试(
InputStream InputStream=新文件InputStream(inputFile);
) {
long fileSize=新文件(inputFile).length();
字节[]所有字节=新字节[(int)文件大小];
inputStream.read(所有字节);
ProducerRecord记录=新的ProducerRecord(“foo”,所有字节);
ProducerRecord hdr=addHeader.addMDHeader(记录);
for(标头:hdr.headers()){
assertEquals(“mdpHeader”,header.key());
}
}
捕获(例外e){
断言(假);
}
}

当在我的Windows桌面上通过Eclipse本地运行时,测试成功,但在尝试在Linux服务器上构建jar时,在
com.me.be.HeaderTests.testMDHeader(HeaderTests.java:81)
失败。这是行
assert(false)
。我还没有得到关于这个问题的更多信息,但想知道它是否可能是Linux环境下
inputFile
中的反斜杠?

Windows和Linux上的Java都将接受
/
作为路径分隔符,而Linux不喜欢
\
作为路径分隔符-因此将整个字符串视为一个路径组件,不是您所期望的4个部分:

String inputFile = "./src/main/resources/binaryFile";
但是,对于文件处理,最好使用
java.nio.Path
java.io.file
代替
String

WINDOWS
jshell> Path.of("./src/main/resources/binaryFile")
$2 ==> .\src\main\resources\binaryFile

Linux
jshell> Path.of("./src/main/resources/binaryFile")
$1 ==> ./src/main/resources/binaryFile
对于任何操作系统,您也可以在不使用任何文件分隔符的情况下使用
Path.of

Path p = Path.of("src","main","resources","binaryFile");

Windows和Linux上的Java都将接受
/
作为路径分隔符,而Linux不喜欢
\
作为路径分隔符-因此将整个字符串视为一个路径组件,而不是预期的4个部分:

String inputFile = "./src/main/resources/binaryFile";
但是,对于文件处理,最好使用
java.nio.Path
java.io.file
代替
String

WINDOWS
jshell> Path.of("./src/main/resources/binaryFile")
$2 ==> .\src\main\resources\binaryFile

Linux
jshell> Path.of("./src/main/resources/binaryFile")
$1 ==> ./src/main/resources/binaryFile
对于任何操作系统,您也可以在不使用任何文件分隔符的情况下使用
Path.of

Path p = Path.of("src","main","resources","binaryFile");

File.separator
字符串可方便地压缩到路径字符串中,以生成独立于操作系统的文件路径

String inputFile = "." + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "binaryFile";

应为您提供一个跨平台兼容的文件路径。

文件.separator字符串可方便地压缩到路径字符串中,以生成独立于操作系统的文件路径

String inputFile = "." + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "binaryFile";

应该为您提供一个跨平台兼容的文件路径。

如果您的文件位于
src/main/resources
中,并且需要在测试中读取,那么您所做的是非常错误的。人们把文件放在那个目录中是有原因的,而这与你现在这样做的原因恰恰相反——可能是反斜杠。如果您知道抛出的异常,这将非常有用。我认为你的代码(
catch(Exception e){assert(false);}
是错误的测试设计。如果你不捕捉异常(而是将测试方法声明为
则抛出异常
)当抛出异常时,测试仍然会失败,但测试框架将为您提供更好的错误报告。谢谢各位。@Eugene我该怎么做?Thomas Kläger我将研究如何使这成为一个更好的测试。如果您的文件位于
src/main/resources
中,并且您需要在测试中读取,那么您所做的是非常错误的。这里这是人们将文件放在那个目录中的原因,而这与你现在这样做的原因正好相反。可能是反斜杠。如果你知道抛出的异常,这将是很有帮助的。我认为你的代码(
catch(exception e){assert(false);}
是糟糕的测试设计。如果你没有捕获异常(而是将您的测试方法声明为
抛出异常
)当抛出异常时,测试仍然会失败,但测试框架将为您提供更好的错误报告。谢谢各位。@Eugene我该怎么做?Thomas Kläger我将看看如何才能使这成为一个更好的测试。
String inputFile = "." + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "binaryFile";