如何测试 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)并将其用作被测方法的输入。