-2

@Test アノテーションでマークされたメソッドを介して Maven によって実行される単純な JUnit テストがあります。ユーザーがCTRL-Cを押した場合にいくつかのテスト結果を出力したいので、シャットダウンフックをそのテストに配置したいと思います。次の行をコーディングします。

@Test
public void runTest() {
    Thread shutdownHook = new Thread()
    {
        @Override
        public void run()
        {
            System.out.println("hooked");
            ... print something via System.out.println ...
        }
    };
    Runtime.getRuntime().addShutdownHook(shutdownHook);

    ... run test ...

}

それを実行するには、Maven を使用します。

mvn clean test -DtestClassName=com.MyTest

問題は、何も印刷されないことです。System.out.println がまだ機能していないようです。修正するにはどうすればよいですか?

4

1 に答える 1

1

ケースをシミュレートするための単体テストを次のように記述しようとしました

@Test
public void whenTest() {
    final Thread shutdownHook = new Thread()
    {
        @Override
        public void run()
        {
            System.out.println("hooked");
        }
    };
    Runtime.getRuntime().addShutdownHook(shutdownHook);
    System.out.println("Start");
    try {
        Thread.sleep(10000);
    } catch (final InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("Stop");
}

で実行しmvn clean test -Dtest=MyTestてからヒットしようとすると、次のCtrl+Cように表示されます

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.test.MyTest
Start
Terminate batch job (Y/N)? y

睡眠期間を待つと、次のように表示されます

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.test.MyTest
Start
Stop
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.034 sec
hooked <----- Is this your expected?

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

これが役立つことを願っています。

于 2013-03-27T12:21:58.213 に答える