我想试图让这个角落案例在这里工作。在我目前的项目中,大约有20个集成测试。一个新的集成测试需要@EnableAsync
使测试工作:集成测试期间重置弹簧启动
@RunWith(SpringRunner.class)
@EnableAsync
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
public class MyITest {
:
}
当单独运行,本次测试工作正常。
考虑到Maven和Eclipse在一个项目中执行测试,并且知道只有一次创建环境并且对所有集成测试重用(或软重置),有必要首先运行该集成测试。但是,这(几乎?)从来不是这种情况。
因此,这个集成测试(几乎?)总是失败。一个明显的解决方案是将@EnableAsync
添加到所有集成测试。然而,这是一个糟糕的依赖,我敢打赌,一旦有人添加了另一个集成测试,并忘记了这个要求,就会打破这个依赖关系
我正在寻找一种方法来强制SpringRunner
完全重置上下文,并真正从头开始也看@EnableAsync
。理想情况下,该方法包括标记SpringRunner
必须在测试之后重置上下文(即,除去@EnableAsync
)。这样,任何执行顺序都可以确保只有那一个测试有@EnableAsync
。
有没有办法做到这一点?或者我可以通过@Before
/@After
方法中的代码手动打开/关闭异步内容?
的[你如何复位弹簧JUnit的应用程序上下文的测试类弄脏了它?(可能的复制https://stackoverflow.com/questions/14718088/how-do-you-reset-spring-junit-application-context-after-a-test-class-dirties-it) – niekname