销毁给定程序包的bean,并在每个黄瓜方案(测试)之前再次创建,以防止状态在方案之间泄漏

时间:2019-06-26 16:15:16

标签: spring spring-boot cucumber cucumber-jvm cucumber-java

我正在尝试在每次测试前销毁咖啡豆。这样一来,当测试开始运行时,它应该创建新鲜的bean来执行测试,因为所需的类是自动装配的。

我正在使用ConfigurableListableBeanFactory的destroyBean方法。

@Autowired
private ConfigurableListableBeanFactory beanFactory;

val beanClass = Class.forName(beanDefinition.getBeanClassName());
val beans = beanFactory.getBeansOfType(beanClass);
beanFactory.destroyBean(bean);

我希望在销毁所有bean时在每次测试之前调用构造函数。 但这不是调用构造函数并使用旧的bean。

1 个答案:

答案 0 :(得分:1)

@Scope("cucumber-glue")

将上述注释放在每个bean的顶部可解决此问题。样本-

@Component
@Scope("cucumber-glue")
public class TestComponent {

}