gpt4 book ai didi

java - 如何为junit编写通用的tearDown方法?

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:18 25 4
gpt4 key购买 nike

在我的项目( Spring Boot 应用程序)中,我有大约 200 多个测试用例。最近,我们为缓存管理器(ehcache)实现了一个工厂 bean,它位于我的启动类(@SpringBootApplication)中。

我的问题是,一旦带有该工厂 bean 的启动类被一个测试用例执行,所有后续测试用例都会因错误而失败......

“同一虚拟机中已存在另一个同名 'appCacheManager' 的 CacheManager。”

为了解决这个问题,我添加了带有这样的主体的拆卸方法......

public void tearDown() {
MyCustomCacheManager customCacheManager = (MyCustomCacheManager) context.getBean("yourCustomCacheManagerBean");

try {
net.sf.ehcache.Cache cache = customCacheManager.getCache();
net.sf.ehcache.CacheManager cacheManager = cache.getCacheManager();
cacheManager.removeCache("nameOfYourCache");
} catch (IllegalAccessException e) {
e.printStackTrace();
}

context.destroy();
context = null;
}

我的问题是,我在所有现有的测试用例中添加了这个拆卸方法。

我们能否有一些可以实现的东西,以便在每个测试用例之后自动调用teardown方法,我不必在每个JUNIT类中添加teardown...

可能是一些通用的拆卸,在现有的测试用例中带有一些注释......

请多多指教......

最佳答案

我正在考虑两种方法来实现这一点:

  1. 创建一个基类,每个单元测试都需要扩展该基类并在其中实现tearDown() 方法。
  2. 使用 AOP(面向方面​​编程),以便在测试包上的每个方法之后执行tearDown() 方法功能。

关于java - 如何为junit编写通用的tearDown方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60527599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com