繁体   English   中英

Java - Mockito - CompletableFutures - 测试方法的意外结果

[英]Java - Mockito - CompletableFutures - Unexpected Result of Tested Method

我有一个非常奇怪的极端情况,未来每运行几千次就没有按预期完成一次。 我能够始终如一地触发故障的唯一方法是重复运行测试,直到它失败。

说测试:

public class TestFunctionality(){
    @Mock private MockIntegrationA mockIntegrationA;
    @InjectMocks private MyHandler unitUnderTest;

    @BeforeEach
    public void init(){
        MockitoAnnotations.openMocks(this);
    }

    @Test
    public void testManagerFailThenSucceed(){
        when(mockIntegrationA.callRestMethod(any())
            .thenThrow(new RuntimeException(""))
            .thenReturn(CompletableFuture.completedFuture(null));

        CompletableFuture<Void> result = unitUnderTest.invokeMethod();
        assertTrue(result.isCompletedExceptionally());
        result = unitUnderTest.callFunction();
        assertFalse(result.isCompletedExceptionally());
    }
}

上面测试中的第一个断言是当测试出错时触发的断言。 是否有没有正确清洁的东西,或者是什么导致了这种边缘情况,即第一个结果没有异常完成?

我不能将评论作为答案,但@tgdavies 关于 runAsync 的评论是正确的。 我将其更改为 CompletedFuture,现在我无法触发此行为。 非常感谢您的帮助! 花了几个小时试图解决它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM