diff --git a/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertion.java b/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertion.java index e72e81a16ed..a09d9cdfdd9 100644 --- a/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertion.java +++ b/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertion.java @@ -37,6 +37,13 @@ static AttributeAssertion create( // suppressing here. @SuppressWarnings("NullAway") static AbstractAssert attributeValueAssertion(AttributeKey key, @Nullable Object value) { + AbstractAssert, ?> abstractAssert = makeAssertion(key, value); + String description = "%s attribute '%s'"; + return abstractAssert.as(description, key.getType(), key.getKey()); + } + + private static AbstractAssert, ?> makeAssertion( + AttributeKey key, Object value) { switch (key.getType()) { case STRING: return assertThat((String) value); diff --git a/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertionTest.java b/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertionTest.java new file mode 100644 index 00000000000..aa229eefb31 --- /dev/null +++ b/sdk/testing/src/test/java/io/opentelemetry/sdk/testing/assertj/AttributeAssertionTest.java @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.testing.assertj; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; + +import io.opentelemetry.api.common.AttributeKey; +import org.assertj.core.api.AbstractAssert; +import org.junit.jupiter.api.Test; + +class AttributeAssertionTest { + + @Test + void nullAttr_errorMessageContainsAttrName() { + AttributeKey key = AttributeKey.stringKey("flib"); + + assertThatThrownBy( + () -> + AttributeAssertion.create(key, AbstractAssert::isNotNull) + .getAssertion() + .accept(AttributeAssertion.attributeValueAssertion(key, null))) + .isInstanceOf(AssertionError.class) + .hasMessage("[STRING attribute 'flib'] \nExpecting actual not to be null"); + } +}