如何在运行时定义JUnit测试超时(即不带注释)?

埃拉德·本达(Elad Benda)

我想运行在运行时定义的超时的单元测试。我只想为一个特定的测试定义一个超时,而不是整个课程。

我看到了以下是设置超时时间的方法:

@Rule
public Timeout globalTimeout = new Timeout(10000); // 10 seconds max per method tested

或者

@Test(timeout=100) public void infinity() {
   while(true);
}

但是,当我运行此代码时,不会引发任何异常。我想确定由于超时而导致测试失败的时间。

public Timeout testTimeout;

private void setTestTimeOut() {
    if (!Strings.isNullOrEmpty(testTimeOut)) {
        testTimeout = new Timeout(Integer.parseInt(testTimeOut));
    }
}

如何捕获异常?将主要方法包装为try-catch(InterruptException)

邓肯·琼斯(Duncan Jones)

添加一个TestWatcher规则,规则在运行时决定是否应用超时:

@Rule
public TestWatcher watcher = new TestWatcher() {
  @Override
  public Statement apply(Statement base, Description description) {
    // You can replace this hard-coded test name and delay with something
    // more dynamic
    if (description.getMethodName().equals("infinity")) {
      return new FailOnTimeout(base, 200);
    }

    return base;
  }
};

您的原始方法不起作用,因为JUnit规则在测试代码开始运行之前生效,因此任何Timeout在测试中调整对象的尝试都为时已晚。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在运行时定义注释

如何在运行时在JUnit 4中获取测试用例名称?

如何在运行时跳过单元测试?

Android SharedPreferences:如何在运行时定义键?

如何在运行时检索Marklogic实体定义

Spring Boot-如何在运行时获取端口而不使用spring注释

如何在运行时的Scala / Java中找到带注释的方法

如何在运行时访问pytest测试的总体测试结果?

如何在运行时根据通用类型定义和运行时类型参数构建Java类型对象?

在运行时更改 SqlConnection 超时

如何在运行时测试是否存在可选模块

如何在特定测试中在运行时添加参数

在Go中,如何在运行时获取测试环境?

如何在运行时为当前测试ApplicationContext注册Spring Context事件

如何在运行时将参数传递给Google测试点?

在运行时获取注释信息

如何在不带XML的Spring的基础上基于属性在运行时注入不同的服务

如何在运行时运行php扩展

ngx-datatable-如何在运行时为列定义“单元格类”

如何在Autofac中在运行时定义嵌套对象的值

如何在运行时使用类型定义具有内部类的类?

C++:如何在运行时以编程方式定义模板类型?

如何在运行时销毁现有的bean并用新的定义Spring替换

如何在运行时使用鹅毛笔定义表名

如何在运行时更改自定义视图颜色?

RealityKit如何在运行时创建自定义网格?

如何在运行时调用 Plug.Router 宏定义的路由?

我如何在运行时修改/重新编译已经定义的函数

如何在运行时自定义antd主题?