Fir*_*lia 3 java spring spring-boot micrometer spring-micrometer
我创建了一个 Micrometer 类,其中创建并递增计数器。如何为公共方法编写单元测试用例并避免向 Micrometer 注册或发送事件。
public class MicroMeter {
private static final MeterRegistry registry = Metrics.globalRegistry;
private Counter createCounter(final String meterName, Map<String, String> mp) {
List<Tag> tags = new ArrayList<>();
for (Map.Entry<String, String> entry : mp.entrySet()) {
tags.add(Tag.of(entry.getKey(), entry.getValue()));
}
return Counter
.builder(meterName)
.tags(tags)
.register(registry);
}
private void incrementCounter(Counter counter) {
counter.increment();
}
public static void createCounterAndIncrement(final String meterName, Map<String, String> mp){
MicroMeter microMeter = new MicroMeter();
Counter counter = microMeter.createCounter(meterName, dimensions);
microMeter.incrementCounter(counter);
}
Run Code Online (Sandbox Code Playgroud)
}
小智 9
针对此场景编写测试的一种方法是将其SimpleMeterRegistry添加到 中globalRegistry,获取Counter然后测试预期行为。
示例片段:
private MeterRegistry meterRegistry;
@BeforeEach
void setUp() {
meterRegistry = new SimpleMeterRegistry();
Metrics.globalRegistry.add(meterRegistry);
}
@AfterEach
void tearDown() {
meterRegistry.clear();
Metrics.globalRegistry.clear();
}
@Test
void testCreateCounterAndIncrement() {
// When
MicroMeter.createCounterAndIncrement("meterName", Map.of("key", "val"));
// Then
var counter = meterRegistry.find("meterName").counter();
then(counter).isNotNull();
then(counter.count()).isEqualTo(1);
then(counter.getId().getTag("key")).isEqualTo("val");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6197 次 |
| 最近记录: |