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
相关产品推荐
相关产品推荐

