如何为使用java.util.regex的函数编写JUnit

时间:2012-10-08 11:24:57

标签: java junit

这是我写的功能:

private String getPatternFromLogFile() {
    final File dir = new File(".");
    try {
        String fileContents = readFile(dir.getCanonicalPath()
                + "\\sshxcute.log");
        Pattern patternDefinition = Pattern.compile(
                ".*Start to run command(.*)Connection channel closed",
                Pattern.DOTALL);
        Matcher inputPattern = patternDefinition.matcher(fileContents);
        if (inputPattern.find()) {
            return inputPattern.group(1);
        }
    } catch (IOException e) {
        LOGGER.log(Level.DEBUG, e.getMessage());
    }
    return "";
}

我试图获取文件内容" sshxcute.log"。 readFile()是这个类本身的一个函数。

我想编写一个测试用例,该测试用例位于if块内,并返回我想要的任何内容,以便我可以断言它。

这是正确的方法吗?

有人可以帮我写JUnit吗? 我是JUnit的新手,任何帮助都会很棒。

谢谢。

1 个答案:

答案 0 :(得分:9)

您的方法正在做一些事情,这使得难以可靠地进行单元测试。它正在读取文件,然后应用正则表达式。

我可能会把它分开。创建一个读取文件并创建行数组,流等的类。然后创建一个读取此数组,流等的组件。在该类中执行正则表达式工作。

通过这种方式,您可以轻松地针对预制数据测试您的正则表达式组件,而不是依赖于文件内容(我注意到您上面的路径是硬编码的 - 这会让生活变得更加困难)。因为您已经从文件读取组件中拆分了正则表达式组件,您可以轻松捕获其输出(对于许多不同的场景 - 而不仅仅是您的一个示例文件提供的场景)