Class OpenTelemetryRule

  • All Implemented Interfaces:
    org.junit.rules.TestRule

    public final class OpenTelemetryRule
    extends org.junit.rules.ExternalResource
    A JUnit4 rule which sets up the OpenTelemetrySdk for testing, resetting state between tests. This rule cannot be used with ClassRule.
    
     > public class CoolTest {
     >   {@literal @}Rule
     >   public OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
     >
     >   private Tracer tracer;
     >
     >   {@literal @}Before
     >   public void setUp() {
     >       tracer = otelTesting.getOpenTelemetry().getTracer("test");
     >   }
     >
     >   {@literal @}Test
     >   public void test() {
     >     tracer.spanBuilder("name").startSpan().end();
     >     assertThat(otelTesting.getSpans()).containsExactly(expected);
     >   }
     >  }
     
    • Method Detail

      • create

        public static OpenTelemetryRule create()
        Returns a OpenTelemetryRule with a default SDK initialized with an in-memory span exporter and W3C trace context propagation.
      • getOpenTelemetry

        public io.opentelemetry.api.OpenTelemetry getOpenTelemetry()
        Returns the OpenTelemetrySdk created by this extension.
      • getTracerManagement

        public io.opentelemetry.sdk.trace.SdkTracerManagement getTracerManagement()
        Returns the SdkTracerManagement created by this extension.
      • getSpans

        public List<io.opentelemetry.sdk.trace.data.SpanData> getSpans()
        Returns all the exported SpanData so far.
      • clearSpans

        public void clearSpans()
        Clears the collected exported SpanData. Consider making your test smaller instead of manually clearing state using this method.
      • before

        protected void before()
        Overrides:
        before in class org.junit.rules.ExternalResource
      • after

        protected void after()
        Overrides:
        after in class org.junit.rules.ExternalResource