`cucumber-glue` 范围和步骤成员变量有什么区别?
What are the differences between `cucumber-glue` scope and step member variables?
AFAICT,使用 cucumber-glue
范围和在步骤 类 中实例化成员变量之间没有太大区别,除了实例化代码所在的位置。
例如,使用cucumber-glue
范围:
@Configuration
public class MyConfiguration {
@Bean
@Scope("cucumber-glue")
public MyContext myContext() {
return new MyContext();
}
}
@SpringBootTest
public class MySteps {
@Autowired
private MyContext myContext;
}
与成员变量:
@SpringBootTest
public class MySteps {
private final MyContext myContext = new MyContext();
}
我还遗漏了其他差异吗?
当您有多个定义文件时,您会希望在它们之间共享一些信息。您可以通过写入同一组件来完成此操作。
然而,所有常规组件都是单例范围的,并且在场景之间存在。这使得它们不适合共享测试状态。它可能会干扰下一个场景。幸运的是 cucumber-glue
作用域组件(包括步骤定义)在场景之间循环使用。这确保您的胶水代码永远是新鲜的。
AFAICT,使用 cucumber-glue
范围和在步骤 类 中实例化成员变量之间没有太大区别,除了实例化代码所在的位置。
例如,使用cucumber-glue
范围:
@Configuration
public class MyConfiguration {
@Bean
@Scope("cucumber-glue")
public MyContext myContext() {
return new MyContext();
}
}
@SpringBootTest
public class MySteps {
@Autowired
private MyContext myContext;
}
与成员变量:
@SpringBootTest
public class MySteps {
private final MyContext myContext = new MyContext();
}
我还遗漏了其他差异吗?
当您有多个定义文件时,您会希望在它们之间共享一些信息。您可以通过写入同一组件来完成此操作。
然而,所有常规组件都是单例范围的,并且在场景之间存在。这使得它们不适合共享测试状态。它可能会干扰下一个场景。幸运的是 cucumber-glue
作用域组件(包括步骤定义)在场景之间循环使用。这确保您的胶水代码永远是新鲜的。