【问题标题】:How to write tests that use Azure SDK?如何编写使用 Azure SDK 的测试?
【发布时间】:2019-09-03 00:27:02
【问题描述】:

我想知道如何编写测试,将在声纳中运行,测试以下方法?

这似乎几乎是不可能的,因为 sonar 无法真正获得 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;
    }
}

【问题讨论】:

    标签: java unit-testing junit integration-testing


    【解决方案1】:

    当您无法为测试获取真实对象时,您可以使用模拟(或存根)。

    在您的示例中,如我所见,您必须模拟 getAzure() 方法,因此它返回 Azure 类型的模拟。这个模拟,必须为此提供适当的实现

    azure.virtualMachines().getByResourceGroup(workspace + "-" + vm, vm);
    

    还有这个

    azure.metricDefinitions().listByResource(vmId);
    

    方法。

    对于模拟,您可以使用Mockito 框架,它提供了一个有用的 API 来创建和模拟对象和方法(使用代码或注释)。

    【讨论】:

      猜你喜欢
      • 2021-08-29
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多