3

junit テスト クラスがあります。テスト クラスはファイルを読み取り、telnet サーバーにメッセージを送信します。ファイル内のメッセージの数に応じて、処理に 1 時間から 5 時間かかる場合があります。プロパティファイルで構成されている時間。以下は私のコードです。

public void sendMessage() throws InterruptedException {
        final long timetorun = Long.valueOf(props.getMap().get("timetorun"))
                .longValue();

        try {

            System.out.println("duration : " + duration);
            while (duration < timetorun) {
                endTime = System.currentTimeMillis();
                duration = endTime - startTime;
                logger.info("Sending Message");
                telnetUtils.run(telnetClient);
                // sendMessage();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

timetorun が 1 時間であると仮定します。ここでの問題は、telnetUtils.run(telnetClient); 1 時間以上かかると、このロジックは機能しません。

これを達成する方法について誰か助けてもらえますか。

4

1 に答える 1

4

テスト ケースにタイムアウトを設定できます。例えば:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;


public class TestTimeout {
    private long startAt;
    @Before
    public void before() {
        this.startAt = System.currentTimeMillis();
    }
    @After
    public void after() {
        System.out.println(String.format("Total time: %1$d ms", System.currentTimeMillis() - startAt));
    }
    @Test(timeout=1000)
    public void timeout() throws InterruptedException {
        Thread.sleep(2000);
    }
}

タイムアウトのため、テストは失敗します。これを標準出力に書き込みます。

Total time: 1001 ms
于 2012-10-16T09:32:10.503 に答える