频道栏目
首页 > 资讯 > 其他 > 正文

junit5 入门系列教程之存储状态(Keeping State in Extensions)

18-06-29        来源:[db:作者]  
收藏   我要投稿

junit5 入门系列教程之存储状态(Keeping State in Extensions) 。

在 Extensions 中保存状态

通常,一个扩展只实例化一次。
因此,问题变得相关了:如何将状态从一个扩展调用保存到下一个扩展?ExtensionContext API为此目的提供了一个存储。
扩展可以将值放入存储中以便以后检索。

请参阅 TimingExtension,了解如何使用带有方法级范围的存储。
重要的是要记住,在测试执行期间存储在 ExtensionContext 中的值在周围的 ExtensionContext 中不可用。
由于可嵌套扩展上下文,内部上下文的范围也可能是有限的。有关通过存储存储存储和检索值的可用方法的详细信息,请参阅相应的JavaDoc。

使用带有方法级范围的存储

import java.lang.reflect.Method;
import java.util.logging.Logger;
import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
import org.junit.jupiter.api.extension.ExtensionContext.Store;

public class TimingExtension implements BeforeTestExecutionCallback, AfterTestExecutionCallback {

 private static final Logger logger = Logger.getLogger(TimingExtension.class.getName());

 private static final String START_TIME = "start time";

 @Override
 public void beforeTestExecution(ExtensionContext context) throws Exception {
  getStore(context).put(START_TIME, System.currentTimeMillis());
 }

 @Override
 public void afterTestExecution(ExtensionContext context) throws Exception {
  Method testMethod = context.getRequiredTestMethod();
  long startTime = getStore(context).remove(START_TIME, long.class);
  long duration = System.currentTimeMillis() - startTime;

  logger.info(() -> String.format("Method [%s] took %s ms.", testMethod.getName(), duration));
 }

 private Store getStore(ExtensionContext context) {
  return context.getStore(Namespace.create(getClass(), context.getRequiredTestMethod()));
 }
}

Store API

ExtensionContext.Store.CloseableResource

扩展上下文存储绑定到其扩展上下文生命周期。

当扩展上下文生命周期结束时,它关闭关联的存储。通过调用close()方法通知属于CloseableResource实例的所有存储值。

相关TAG标签
上一篇:FarPoint.Win.Spread 常规操作
下一篇:java中发布maven项目的三种方式:直接运行、jar包方式、war包方式等实例讲解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站