多个TestFiles和oilbrestserviceserver,期望其他TestFile的呼叫



我已经构建了一个具有两个端点的服务,我想通过集成测试覆盖两个端点。为了防止这些集成测试达到其他服务,我正在使用MockRestServiceServer类来模拟其他HTTP服务的响应。

testoperationa:

@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({"integration"})
@ComponentScan(basePackages = "nl.xyz")
public class OperationAIntegrationTest {
    MockRestServiceServer mockServer;
    @Autowired
    RestTemplate restTemplate;
    @Autowired
    OperationA operationA;
    @Before
    public void setup() {
        this.mockServer = MockRestServiceServer.bindTo(restTemplate).bufferContent().ignoreExpectOrder(true).build();
        this.mockServer.reset();
    }
    @After
    public void finish() {
        // Verify all method calls are run after the testcase.
        this.mockServer.verify();
        this.mockServer.reset();
    }

,然后测试容器包含以下内容:

this.mockServer.expect(requestTo(ENDPOINT_OAUTH))
            .andExpect(method(HttpMethod.POST))
            .andRespond(withSuccess(objectMapper.writeValueAsString(oAuthToken), MediaType.APPLICATION_JSON));

我对操作bintegrationTest也这样做。这包括与restTemplate

的绑定

现在问题是,如果我单独运行所有测试算盘,一切都会成功。如果我从操作aperationb操作中运行所有测试柜,它们都成功。但是,当我运行所有测试柜时,以序列执行操作A和操作B的集成测试时,来自操作B的测试柜失败。即使我看到,当测试框架跳到第二个测试文件时,Spring Boot重新开始。

我认为MockRestServiceServer不会被清理,或者我对RestTemplate的绑定做错了什么。我通过将.reset().verify()组合放置在@Before@After中,但没有效果。有人知道为什么会发生这种情况吗?

显然,由于先前的测试已经对其进行了更新,因此在后台发生了一些事情,导致某些变量和方法不再被更新。当我不弄脏应用程序上下文时(例如,使用更多的无酒精(,那么一切都可以。

因此,调整后台值的值应标记为脏。

相关内容

  • 没有找到相关文章

最新更新