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

Destroying bean of a given package and create again before each cucumber scenario (test) to prevent state from leaking between scenarios

我试图在每次测试前销毁豆子。因此,当测试开始时 运行 它应该根据需要创建新的 bean 来执行测试 类 是自动装配的。

我正在使用 ConfigurableListableBeanFactory 的 destroyBean 方法。

@Autowired
private ConfigurableListableBeanFactory beanFactory;

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

我希望在每次测试之前调用构造函数,因为我正在销毁所有 bean。 但它不是调用构造函数并使用旧 bean。

@Scope("cucumber-glue")

将上面的注释放在每个 bean 的顶部解决了这个问题。示例 -

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

}