繁体   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