有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在一定时间内运行junit测试

我想测试一段时间,比如说5秒钟,然后如果没有任何错误,就通过测试。这在注释中是可能的吗?像@Test(uptime=5000)这样的东西可以用吗


共 (1) 个答案

  1. # 1 楼答案

    问题编辑后修改答案

    从根本上说,这里感觉你在测试错误的东西——“什么都没发生”是成功的标志,这似乎很奇怪

    如果你想证明你的算法可以运行一定时间而不会失败,我会提取一个周期,然后写一个测试,比如:

    @Test
    public void fineForFiveSeconds() {
        long start = System.nanoTime();
        long end = start + TimeUnit.SECONDS.toNanos(5);
        while (System.nanoTime < end()) {
            test.executeOneIteration();
        }
    }
    

    这样你就不需要一个单独的线程来杀死正在工作的代码等等

    原始答案

    这个问题表明超时是成功的标志,而不是失败的标志

    我想您只需要@Test注释中的^{}属性:

    @Test(timeout = 5000)
    

    随附文件:

    Optionally specify timeout in milliseconds to cause a test method to fail if it takes longer than that number of milliseconds.