1

内部的に を呼び出すことができるようにJUnit、テストケースを作成する必要があります。ClassC1Runtime.getRuntime.exit(somevalue)

クラスC1には、いくつかをmain受け入れるメソッドがあり、渡されたものに応じて特定のタスクを実行します。argumentsCommandLinearguments

実行後のすべてのタスクは、 a を呼び出しますRuntime.getRuntime.exit(somevalue)。はsomevalue、タスクが正常に実行されたか (somevalue が 0 であることを意味します)、またはエラーが発生したか (somevalue が 1 であることを意味します) を定義します。

これのJUnitテストケースでは、これを取得してsomevalue、それが望ましいかどうかを確認する必要がありますsomevalue

somevalueJUnit テスト ケースでを取得するにはどうすればよいですか。

4

1 に答える 1

3

セキュリティマネージャをオーバーライドして終了コードをキャッチできます。モックフレームワークを使用する場合は、より簡潔になります。

@Test
public void when_main_is_called_exit_code_should_be_1() throws Exception {
    final int[] exitCode = new int[1];
    System.setSecurityManager(new SecurityManager() {
        @Override
        public void checkExit(int status) {
            exitCode[0] = status;
            throw new RuntimeException();
        }});

    try { main(); } catch(Exception e) {}

    assertEquals(exitCode[0], 1);
}

public static void main() {
    System.exit(1);
}
于 2012-07-16T13:33:38.700 に答える