如果你需要任何其他信息,请让我知道。
简短版本:
用jUnit 4.12测试时,这行代码会导致NullPointerException:
File[] files = new File(searchPath).listFiles();
长版本:
首先,这是环境:
仅当我运行jUnit-test时才会发生异常。当我在没有任何测试的情况下构建它时,一切正常,并且File[]file=new File(搜索路径). listFiles()中的函数listFiles()不会返回null。
gradle clean & gradle build -x test & gradle rest:jettyRun 2> test.txt
这是问题函数,在我的类的构造函数中调用:
/**
* Scans for JSON files on given path
* @param searchPath full path given
* @return String[] with the full paths and names of found files
*/
private String[] scanForJsons(String searchPath){
System.out.println("search path "+searchPath); // shows D:\..\core\files
File[] files = new File(searchPath).listFiles(); // problem line, allways returns null
System.out.print(((files!=null)?"Not null" : "Null"));
System.out.println("files.length: "+files.length);
String[] stringArray = new String[files.length];
for(int i = 0; i < files.length; i++){
String path = files[i].getName();
if (path.endsWith(".json")) {
path = path.substring(0, path.length() - 5);
}
stringArray[i] = path;
}
return stringArray;
}
如java.io的描述所示。文件,java.nio。文件应该用来克服java.io.file的限制。
在我重新编写了整个函数并从java.io迁移之后。文件和字符串到java.nio。文件和路径。
该代码是在读取文件夹中的所有文件中找到的。
private List<Path> scanForJsons(Path pathScanned){
List<Path> pathList = new ArrayList<>();
try {
Files.walk(pathScanned).forEach(filePath -> {
if (Files.isRegularFile(filePath)) {
pathList.add(filePath);
}
});
} catch (IOException e) {
e.printStackTrace();
}
return pathList;
}
即使我不再需要它,我也编写了函数来获取没有文件扩展名的文件名:
//Get a list of the filenames without the filename extension
private List<String> getRawNamesOfFiles(String filenameExtension){
List<String> fileNames = new ArrayList<String>();
try {
Files.walk(Paths.get("").toAbsolutePath().getParent()).forEach(filePath -> {
if (Files.isRegularFile(filePath)) {
String fileName = getRawNameOfFile(filePath, filenameExtension);
if(fileName != null){
fileNames.add(fileName);
}
}
});
} catch (IOException e) {
e.printStackTrace();
}
return fileNames;
}
// removes the filename extension
// checks if the file extension of the path fits the wanted filename extension, returns null if it doesn't fit
private String checkAndEditTheName(Path path, String wantedFilenameExtension){
int cutLength = wantedFilenameExtension.length() + (wantedFilenameExtension.startsWith(".")?0:1);
String pathEnd = path.getFileName().toString();
if(pathEnd != null && pathEnd.endsWith(wantedFilenameExtension)){ //search for a specific filename extension
pathEnd = pathEnd.substring(0, pathEnd.length() - cutLength); // remove the filename extension and the point
return pathEnd;
}
return null;
}
<code>文件的文档。listFiles()包括:
如果此抽象路径名不表示目录,或者发生I/O错误,则返回null。
所以看起来这就是正在发生的事情。d:\.. 的路径。\核心\文件
对我来说看起来不像一个有效的路径名...您如何期望目录成为根目录的父目录?
您需要更改您的测试来提供一个有效的路径——并且很可能更改您的方法来处理< code>listFiles()可能返回的< code>null。
我无法同时运行TestNG/JUnit的Cucumber TestRunner类。我希望在我的框架中包含Testng和junit。我得到一些abc类错误。我的项目中有所有的依赖项。我这里有2qns。1.当从cucumber junit导入时,我可以在我的cucumber脚本中使用Testng注释吗?2.如何解决错误执行我的testrun。 我错过了什么...如果我错过了什么,请帮我把它修好。
本文向大家介绍JavaScript中使用arguments获得函数传参个数实例,包括了JavaScript中使用arguments获得函数传参个数实例的使用技巧和注意事项,需要的朋友参考一下 JS与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JS就灵活多了,可以随意传参,实参比形参少或多都不会报错。 实参比形参多不会报错 执行结果 我们再来看看形参比实参多的结果 执行结果 a 对应
我的类路径:C:\Users\48790\IdeaProjects\WorkingWithCommand\Src在terminal:C:\Users\48790\IdeaProjects\WorkingWithCommand的目录中 我尝试了:-cp C:\users\48790\ideaProjects\workingwithcommand\src和 set CLASSPATH=c:\users
我已经写下了如下测试用例,并得到了以下错误, 日志错误: 失败:setpassword java.lang.AssertionError:1个预期失败。预期状态代码 代码:
我正在使用Junit4测试外部java类。我想模拟下面的代码行 我试过这样 但我仍然收到了这个错误“java.lang.ExceptionInInitializeError” Java语言lang.ExceptionInInitializerRor在sun。反映GeneratedSerializationConstructorAccessor6。java上的newInstance(未知源)。lan
函数功能:获得 LuaBox 当前版本 函数方法 version = device.getLuaBoxVer() 返回值 类型 说明 version string 返回获得 LuaBox 当前版本如:1.0 函数用例 version = device.getLuaBoxVer() dialog(version,5000) 注意事项 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中