Junit希望在一定时间后停止该方法

时间:2012-10-16 07:04:01

标签: java junit

我有一个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个多小时才能使用这个逻辑。

任何人都可以提供一些帮助,如何实现这一点。

1 个答案:

答案 0 :(得分:3)

您可以在测试用例上设置超时。例如:

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
相关问题