@DirtiesContext 不适用于 @Nested 测试

2023-12-30

经过几个小时的谷歌研究后我仍然不知道如何使用@DirtiesContext with @Nested类。假设以下集成测试类:

@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
public class StuffIntegrationTests {

    @Autowired
    private StuffRepository stuffRepository;

    @Autowired
    private WebApplicationContext context;

    private MockMvc mvc;

    // ...

    @BeforeEach
       private void setUp() {
       mvc = MockMvcBuilders
                .webAppContextSetup(context)
                .apply(springSecurity())
                .build();
       // ...
       }

    @DisplayName("POST - /stuffs")
    @Nested
    class saveStuff{

        @DisplayName("Return 2xx")
        @Nested
        class Return2xx{

           // some test methods

        @DisplayName("Return 4xx")
        @Nested
        class Return4xx{

          // some tests methods

    }

    @DisplayName("GET - /stuffs/{stuffId}")
    @Nested
    class findStuffById{

        @DisplayName("Return 2xx")
        @Nested
        class Return2xx{

           // some test methods

        @DisplayName("Return 4xx")
        @Nested
        class Return4xx{

          // some tests methods

    }
}

正如您所看到的,我希望通过按端点将其拆分为嵌套类来使该类更具可读性,并且对于每个端点,都有可按 Http 响应状态拆分的嵌套类。

我尝试使用@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)在多个级别上,它不会在每个类之前清理 Spring Context,如果我输入,结果是相同的@DirtiesContext(methodMode = DirtiesContext.MethodMode.BEFORE_METHOD)在每个方法上。

我的目标是在类的每个方法之前清理 Spring ContextSaveStuff并且只在课程开始时清理一次上下文findStuffById

非常感谢你的帮助。


Spring 不支持从 JUnit Jupiter 的封闭类继承测试配置@Nested测试类直到 Spring Framework 5.3。

有关详细信息,请参阅@Nested测试类配置 https://docs.spring.io/spring-framework/docs/current/reference/html/testing.html#testcontext-junit-jupiter-nested-test-configurationSpring 参考手册的部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@DirtiesContext 不适用于 @Nested 测试 的相关文章

随机推荐