如何测试 java NIO 静态方法?
How can I test java NIO static methods?
如何测试 java NIO 静态方法?
我有一个方法
public Stream<String> getFileInformation(Provider provider) {
Path feedDirectoryPath;
DirectoryStream<Path> stream;
List<Path> files = new ArrayList<>();
try {
feedDirectoryPath = getFeedDirectoryPath();
if (!isFileExists(feedDirectoryPath)) {
return null;
}
stream = getDirectoryStream(feedDirectoryPath);
for(Path p : stream) {
files.add(p);
}
return Files.lines(Paths.get(files.stream().toString()));
} catch (Exception e) {
return null;
}
}
我必须测试这个方法,但是一旦我的测试到达Files.lines(..),我就卡住了。我不知道如何断言这一点,当然如果我要传递像 Path filePath = Paths.get("dummy.txt") 这样的文件路径;
将抛出 NoSuchFileException。如果您能帮助测试此方法,我们将不胜感激。
您可以为它提供一个实际文件(例如,如果您使用 Maven,则在 src\test\resources 文件夹中),或者使用 PowerMock
模拟静态方法。我会推荐第一个,它应该可以加载一个文件(例如相对于你的测试 class 使用 classloader)并将其用作被测方法的输入。
如何测试 java NIO 静态方法?
我有一个方法
public Stream<String> getFileInformation(Provider provider) {
Path feedDirectoryPath;
DirectoryStream<Path> stream;
List<Path> files = new ArrayList<>();
try {
feedDirectoryPath = getFeedDirectoryPath();
if (!isFileExists(feedDirectoryPath)) {
return null;
}
stream = getDirectoryStream(feedDirectoryPath);
for(Path p : stream) {
files.add(p);
}
return Files.lines(Paths.get(files.stream().toString()));
} catch (Exception e) {
return null;
}
}
我必须测试这个方法,但是一旦我的测试到达Files.lines(..),我就卡住了。我不知道如何断言这一点,当然如果我要传递像 Path filePath = Paths.get("dummy.txt") 这样的文件路径; 将抛出 NoSuchFileException。如果您能帮助测试此方法,我们将不胜感激。
您可以为它提供一个实际文件(例如,如果您使用 Maven,则在 src\test\resources 文件夹中),或者使用 PowerMock
模拟静态方法。我会推荐第一个,它应该可以加载一个文件(例如相对于你的测试 class 使用 classloader)并将其用作被测方法的输入。