如何在 Spring 中将测试套件从 JUnit 迁移到 Cucumber 以进行单元测试?
How to migrate test suites from JUnit to Cucumber for Unit Tests in Spring?
就我所做的研究而言,我看到 Cucumber 用于集成测试,而不是用于单元测试。但我想知道是否有可能迁移到 Cucumber,因为测试在 Cucumber classes 中更具可读性和易于更改。
假设这是我的控制器测试 class;
@WebMvcTest(value = Controller.class)
class ControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private Service service;
private XDTO xDTO;
private List<XDTO> xDTOList;
@BeforeEach
void setUp() {
xDTOList = new ArrayList<>();
X x= new X();
xDTO = new XDTO();
xDTO.setId(x.getId());
xDTOList.add(xDTO);
}
@Test
public void initialize_success() throws Exception {
when(service.initialize()).thenReturn(xDTO);
mockMvc.perform(MockMvcRequestBuilders.post(X + INITIALIZE)
.accept(APPLICATION_JSON))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.id", is(xDTO.getId())));
}
如何通过启动部分上下文(如 JUnit)将其更改为 Cucumber 测试 class?
Cucumber 不用于单元测试,因为 Cucumber 的主要优点是能够使用抽象的高级自然语言表达您正在检查的行为。那种语言不太适合单元测试,单元测试应该更加关注单元行为的细节。
如果您在 Cucumber 中使用低级抽象并记录事情是如何完成的,您最终会遇到冗长的场景,这些场景很快就会变得笨拙且难以处理。
one testing tool to test (rule) them all
的想法最初非常吸引人。我被它强烈吸引了一段时间。随着更多的 cuking 经验,很明显这个想法是有缺陷的。单元测试工具更适合编写单元测试,它易于循环、模拟和进行更详尽的测试。如果您正确实施它们,它们总是 运行 也会快得多。
这种在不同规模上使用不同工具的想法并不是什么新鲜事,它几乎适用于人类的每一项努力。测试也不例外。使用 Cucumber 来描述(理想情况下驱动)system/application 的高级行为。使用单元测试对单元进行更小的详细测试。
就我所做的研究而言,我看到 Cucumber 用于集成测试,而不是用于单元测试。但我想知道是否有可能迁移到 Cucumber,因为测试在 Cucumber classes 中更具可读性和易于更改。
假设这是我的控制器测试 class;
@WebMvcTest(value = Controller.class)
class ControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private Service service;
private XDTO xDTO;
private List<XDTO> xDTOList;
@BeforeEach
void setUp() {
xDTOList = new ArrayList<>();
X x= new X();
xDTO = new XDTO();
xDTO.setId(x.getId());
xDTOList.add(xDTO);
}
@Test
public void initialize_success() throws Exception {
when(service.initialize()).thenReturn(xDTO);
mockMvc.perform(MockMvcRequestBuilders.post(X + INITIALIZE)
.accept(APPLICATION_JSON))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.id", is(xDTO.getId())));
}
如何通过启动部分上下文(如 JUnit)将其更改为 Cucumber 测试 class?
Cucumber 不用于单元测试,因为 Cucumber 的主要优点是能够使用抽象的高级自然语言表达您正在检查的行为。那种语言不太适合单元测试,单元测试应该更加关注单元行为的细节。
如果您在 Cucumber 中使用低级抽象并记录事情是如何完成的,您最终会遇到冗长的场景,这些场景很快就会变得笨拙且难以处理。
one testing tool to test (rule) them all
的想法最初非常吸引人。我被它强烈吸引了一段时间。随着更多的 cuking 经验,很明显这个想法是有缺陷的。单元测试工具更适合编写单元测试,它易于循环、模拟和进行更详尽的测试。如果您正确实施它们,它们总是 运行 也会快得多。
这种在不同规模上使用不同工具的想法并不是什么新鲜事,它几乎适用于人类的每一项努力。测试也不例外。使用 Cucumber 来描述(理想情况下驱动)system/application 的高级行为。使用单元测试对单元进行更小的详细测试。