如何编写使用 Azure SDK 的测试?
How to write tests that use Azure SDK?
我想知道如何编写测试,运行 在声纳中,将测试以下方法?
这似乎几乎是不可能的,因为声纳实际上无法获得 azure 订阅,所以这一切都必须被嘲笑。
如有任何帮助或指点,我们将不胜感激。
public AzureMetricRecords getVmMetrics(String azureSubscriptionId, String workspace, String vm, String metric, AggregationType aggregationType) {
Azure azure = getAzure(azureSubscriptionId);
String vmId = "/subscriptions/" + azureSubscriptionId + "/resourceGroups/" + workspace + "-" + vm +
"/providers/Microsoft.Compute/virtualMachines/" + vm;
VirtualMachine azureVm = azure.virtualMachines().getByResourceGroup(workspace + "-" + vm, vm);
if (azureVm != null) {
Map<String,MetricDefinition> metricsIndex = new HashMap<>();
List<MetricDefinition> definitions = azure.metricDefinitions().listByResource(vmId);
for (MetricDefinition d : definitions) {
metricsIndex.put(d.name().value(), d);
}
if (!metricsIndex.containsKey(metric)) {
throw new ValidationException("metric not found");
}
return getMetrics(DateTime.now(), metricsIndex.get(metric), aggregationType);
} else {
LOGGER.warn("getVmMetrics: Vm NOT found");
AzureMetricRecords metricRecords = new AzureMetricRecords();
metricRecords.setMetric(metric);
metricRecords.setAggregation(aggregationType.name());
return metricRecords;
}
}
当您无法获得用于测试的真实对象时,您可以使用模拟(或存根)。
在您的示例中,如我所见,您必须模拟 getAzure()
方法,因此它 returns 是 Azure
类型的模拟。这个模拟必须为此提供适当的实现
azure.virtualMachines().getByResourceGroup(workspace + "-" + vm, vm);
还有这个
azure.metricDefinitions().listByResource(vmId);
方法。
对于模拟,您可以使用 Mockito 框架,它提供了一个有用的 API 用于创建和模拟对象和方法(使用代码或注释)。
我想知道如何编写测试,运行 在声纳中,将测试以下方法?
这似乎几乎是不可能的,因为声纳实际上无法获得 azure 订阅,所以这一切都必须被嘲笑。
如有任何帮助或指点,我们将不胜感激。
public AzureMetricRecords getVmMetrics(String azureSubscriptionId, String workspace, String vm, String metric, AggregationType aggregationType) {
Azure azure = getAzure(azureSubscriptionId);
String vmId = "/subscriptions/" + azureSubscriptionId + "/resourceGroups/" + workspace + "-" + vm +
"/providers/Microsoft.Compute/virtualMachines/" + vm;
VirtualMachine azureVm = azure.virtualMachines().getByResourceGroup(workspace + "-" + vm, vm);
if (azureVm != null) {
Map<String,MetricDefinition> metricsIndex = new HashMap<>();
List<MetricDefinition> definitions = azure.metricDefinitions().listByResource(vmId);
for (MetricDefinition d : definitions) {
metricsIndex.put(d.name().value(), d);
}
if (!metricsIndex.containsKey(metric)) {
throw new ValidationException("metric not found");
}
return getMetrics(DateTime.now(), metricsIndex.get(metric), aggregationType);
} else {
LOGGER.warn("getVmMetrics: Vm NOT found");
AzureMetricRecords metricRecords = new AzureMetricRecords();
metricRecords.setMetric(metric);
metricRecords.setAggregation(aggregationType.name());
return metricRecords;
}
}
当您无法获得用于测试的真实对象时,您可以使用模拟(或存根)。
在您的示例中,如我所见,您必须模拟 getAzure()
方法,因此它 returns 是 Azure
类型的模拟。这个模拟必须为此提供适当的实现
azure.virtualMachines().getByResourceGroup(workspace + "-" + vm, vm);
还有这个
azure.metricDefinitions().listByResource(vmId);
方法。
对于模拟,您可以使用 Mockito 框架,它提供了一个有用的 API 用于创建和模拟对象和方法(使用代码或注释)。