簡體   English   中英

單元測試,如何測試? 想要但未在 Mockito.verify 上調用

[英]Unit test, how to test? wanted but not invoked on Mockito.verify

我有帶有構造函數和方法的GatewayServer.class

public class GatewayServer {

    private ResourceConfig resourceConfig = null;

    public GatewayServer(...) {
    
            ...
    
            resourceConfig = new ResourceConfig();

            ...
    }

    public void registerController(Class<?> controller) {
            resourceConfig.register(controller);
    }

我有GatewayServerTest.class ,我想測試在 resourceConfig 上是否調用了register()方法,但我不知道如何添加new ResourceConfig()模擬:

@RunWith(MockitoJUnitRunner.class)
public class GatewayServerTest {
    
    @InjectMocks
    GatewayServer gatewayServer;
    
    @Mock
    ResourceConfig resourceConfig;
    
    @Before
    public void setup() {
        gatewayServer = new GatewayServer(...);
    }
    
    @Test
    public void registerControllerTest() {
        
        gatewayServer.registerController(Endpoint.class);
        
        Mockito.verify(resourceConfig, Mockito.atLeastOnce()).register(Mockito.any());
    }  
}

用 Mockito 是不可能做到的,但你可以使用 PowerMock,它可以模擬構造函數本身。

另一種解決方案是不在構造函數中而是在適當位置初始化Resource config (如果您沒有任何后初始化):

private ResourceConfig resourceConfig = new ResourceConfig();

在這種情況下,可以使用 Mockito 進行模擬(就像您在測試類中所做的那樣)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM