You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Java SDK PagedList测试用例编写求助

模拟Azure PagedList返回VirtualMachineSize的测试用例示例

别担心,我之前也折腾过这个Azure SDK的分页对象,给你两种实用的方案,不管是手动构造还是用Mock框架都能轻松搞定:

方案1:手动构造PagedList(无需Mock框架)

其实PagedList本身就提供了直接的构造方式,不用非得Mock,适合简单的测试场景。咱们只需要先创建模拟的VirtualMachineSize对象列表,再传入构造函数就行:

import com.microsoft.azure.PagedList;
import com.microsoft.azure.management.compute.VirtualMachineSize;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;

public class VirtualMachineSizeTest {

    @Test
    public void testPagedListWithMockedVMs() {
        // 1. 创建模拟的VirtualMachineSize对象
        VirtualMachineSize mockSize1 = mockVirtualMachineSize("Standard_DS1_v2", 1, 2);
        VirtualMachineSize mockSize2 = mockVirtualMachineSize("Standard_DS2_v2", 2, 4);
        List<VirtualMachineSize> vmSizes = Arrays.asList(mockSize1, mockSize2);

        // 2. 直接构造PagedList,第二个参数是continuation token(分页用,测试时传null就行)
        PagedList<VirtualMachineSize> pagedList = new PagedList<>(vmSizes, null);

        // 3. 现在就可以用这个pagedList来测试你的业务逻辑了
        assert pagedList.size() == 2;
        assert pagedList.get(0).name().equals("Standard_DS1_v2");
    }

    // 辅助方法:快速创建模拟的VirtualMachineSize(这里用Mockito做简单Stub)
    private VirtualMachineSize mockVirtualMachineSize(String name, int cores, int memoryInGB) {
        return org.mockito.Mockito.mock(VirtualMachineSize.class, invocation -> {
            String methodName = invocation.getMethod().getName();
            if ("name".equals(methodName)) {
                return name;
            } else if ("numberOfCores".equals(methodName)) {
                return cores;
            } else if ("memoryInGB".equals(methodName)) {
                return memoryInGB;
            }
            return invocation.callRealMethod();
        });
    }
}

方案2:Mock SDK客户端返回PagedList

如果你的代码是依赖Azure的VirtualMachineSizesClient这类客户端来获取PagedList,那可以用Mockito直接Mock客户端的返回:

import com.microsoft.azure.PagedList;
import com.microsoft.azure.management.compute.VirtualMachineSizes;
import com.microsoft.azure.management.compute.VirtualMachineSize;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.junit.runner.RunWith;
import java.util.Arrays;

@RunWith(MockitoJUnitRunner.class)
public class VmSizeClientMockTest {

    @Mock
    private VirtualMachineSizes mockVmSizesClient; // Mock Azure SDK的客户端

    @Test
    public void testClientReturnsPagedList() {
        // 1. 构造模拟的VM Size列表和PagedList
        VirtualMachineSize mockSize = org.mockito.Mockito.mock(VirtualMachineSize.class);
        org.mockito.Mockito.when(mockSize.name()).thenReturn("Standard_DS3_v2");
        PagedList<VirtualMachineSize> mockPagedList = new PagedList<>(Arrays.asList(mockSize), null);

        // 2. 让Mock的客户端返回这个PagedList
        org.mockito.Mockito.when(mockVmSizesClient.listByRegion("eastus")).thenReturn(mockPagedList);

        // 3. 调用你的业务方法(比如依赖mockVmSizesClient的方法)
        PagedList<VirtualMachineSize> result = mockVmSizesClient.listByRegion("eastus");

        // 4. 验证结果
        assert result.size() == 1;
        assert result.get(0).name().equals("Standard_DS3_v2");
    }
}

一些实用注意点

  • 如果你需要模拟多页数据,可以给PagedList的构造函数传入非null的continuation token,然后在测试中模拟后续分页的调用逻辑。
  • 注意Azure SDK的版本,不同版本的PagedList构造方法可能略有差异,但核心逻辑基本一致。
  • 上面的示例用了Mockito,你需要确保项目里引入了Mockito的依赖(比如mockito-core)。

内容的提问来源于stack exchange,提问作者user1142317

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:16:01