0

これは私が書いた関数です:

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が初めてで、どんな助けも素晴らしいでしょう。

ありがとうございました。

4

1 に答える 1

9

あなたのメソッドはいくつかのことを行っているため、確実に単体テストを行うことが難しくなっています。ファイルを読み取ってから、正規表現を適用しています。

私はおそらくこれを分割します。ファイルを読み取り、行の配列、ストリームなどを作成するクラスを作成します。次に、この配列、ストリームなどを読み取るコンポーネントを作成します。そのクラスで正規表現作業を実行します。

そうすれば、正規表現コンポーネントを既定のデータに対して簡単にテストできファイルの内容に依存する必要はありません (上記のパスはハードコードされていることに注意してください。これにより、作業がより困難になります)。正規表現コンポーネントをファイル読み取りコンポーネントから分割したため、その出力を簡単にキャプチャできます (1 つのサンプル ファイルで提供されるシナリオだけでなく、さまざまなシナリオで)

于 2012-10-08T11:29:24.230 に答える