我決定回到我和春天啓動器,我已經在這裏提到的整合卡夫卡度量的想法:卡夫卡MetricsReporter由Spring啓動器支持
https://github.com/spring-projects/spring-boot/issues/6227
截至目前我有一個單獨的帶有工作代碼的「sandbox」項目,我想將它合併到Spring Boot中。現在我有點困惑。我的測試部分需要powermock嘲笑卡夫卡的「超安全」類:
package org.apache.kafka.common.metrics;
// some imports...
public final class KafkaMetric implements Metric {
private MetricName metricName;
private final Object lock;
private final Time time;
private final Measurable measurable;
private MetricConfig config;
KafkaMetric(Object lock, MetricName metricName, Measurable measurable, MetricConfig config, Time time) {
this.metricName = metricName;
this.lock = lock;
this.measurable = measurable;
this.config = config;
this.time = time;
}
// some good code here, but no public constructor and the class is final... of course.
}
但powermock沒有在春季啓動時使用。
我該怎麼辦?
- 添加最新的穩定powermock - 無論是在spring-boot-dependencies和spring-boot-actuator。
- 添加最新的穩定powermock只彈簧啓動執行器 - 讓它成爲一個隱藏的祕密幫手。
- 排除需要powermock的測試。
- 忘記Kafka指標,它們非常可怕,沒有人希望它們在我們友好的,友好的彈簧啓動器中使用。
PS:我也一直在努力,讓世界變得更美好,並在卡夫卡自己解決這個問題,但不幸的維護者一直不理我:
如何使用'Metrics.addMetric()'創建'KafkaMetric'實例,並通過'KafkaStatisticsProvider.metricChange()'做出反應,您將在測試前註冊到Metrics實例中?當然,不是Powermock。不熟悉Kafka度量標準,但我分叉你的項目。看起來很簡單,但需要一些時間來弄清楚發生了什麼。如果週末沒有找到時間,會從星期一回來給你。 –
這回答了問題,案件已結案,謝謝。期待收到你的來信 – stepio