cucumber 执行的集成测试往往会留下导致后续测试出现问题的上下文。显而易见的解决方案似乎是Spring的@DirtiesContext,但是与其在所有 cucumber 功能都运行完之后不删除上下文,而是在每种情况下都执行此操作,从而使测试执行时间相当长。
也尝试过@TestExecutionListeners,但是没有运气。

@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( classes = { MyApplication.class, MyTestComponent.class }, loader = SpringApplicationContextLoader.class )
@ActiveProfiles( { "test", "someotherprofile" } )
@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_CLASS )
@WebIntegrationTest( randomPort = true )
public class StepDefs extends StepDefUtils {
    // givens, whens, thens

我是否试图以不受支持的方式使用DirtiesContext?

最佳答案

cucumber 测试方法被编译到不同的测试类中,因此@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_CLASS )将在每种测试方法之后运行。

不幸的是,我看不到任何适合您需求的DirtiesContext模式。
我会搜索一些 cucumber 监听器,并手动使spring上下文变脏。

10-06 14:10