### Question:
FluentWebElementAssert extends AbstractFluentAssert<FluentWebElementAssert, FluentWebElement> implements ElementStateAssert, ElementAttributeAssert { @Override public FluentWebElementAssert hasAttributeValue(String attribute, String value) { String actualValue = actual.attribute(attribute); if (actualValue == null) { failWithMessage("The element does not have attribute " + attribute); } if (!actualValue.equals(value)) { failWithMessage("The " + attribute + " attribute " + "does not have the value: " + value + ". Actual value : " + actualValue); } return this; } FluentWebElementAssert(FluentWebElement actual); @Override FluentWebElementAssert isEnabled(); @Override FluentWebElementAssert isNotEnabled(); @Override FluentWebElementAssert isDisplayed(); @Override FluentWebElementAssert isNotDisplayed(); @Override FluentWebElementAssert isSelected(); @Override FluentWebElementAssert isNotSelected(); @Override FluentWebElementAssert isClickable(); @Override FluentWebElementAssert isNotClickable(); @Override FluentWebElementAssert isPresent(); @Override FluentWebElementAssert isNotPresent(); @Override FluentWebElementAssert hasText(String textToFind); @Override FluentWebElementAssert hasTextContaining(String text); @Override FluentWebElementAssert hasTextMatching(String regexToBeMatched); @Override FluentWebElementAssert hasNotText(String textToFind); @Override FluentWebElementAssert hasNotTextContaining(String textToFind); @Override FluentWebElementAssert hasId(String idToFind); @Override FluentWebElementAssert hasClass(String classToFind); @Override FluentWebElementAssert hasNotClass(String htmlClass); @Override FluentWebElementAssert hasClasses(String... classesToFind); @Override FluentWebElementAssert hasNotClasses(String... classesToFind); @Override FluentWebElementAssert hasValue(String value); @Override FluentWebElementAssert hasName(String name); @Override FluentWebElementAssert hasTagName(String tagName); @Override FluentWebElementAssert hasDimension(Dimension dimension); @Override FluentWebElementAssert hasAttributeValue(String attribute, String value); @Override AbstractStringAssert hasAttribute(String attribute); @Override FluentWebElementAssert hasNotAttribute(String attribute);  }### Answer:
@Test public void testHasAttributeValueOk() { when(element.attribute("attribute")).thenReturn("some value"); elementAssert.hasAttributeValue("attribute", "some value"); }
@Test public void testHasAttributeValueKo() { when(element.attribute("attribute")).thenReturn("other value"); assertThatAssertionErrorIsThrownBy(() -> elementAssert.hasAttributeValue("attribute", "some value")) .hasMessage("The attribute attribute does not have the value: some value. Actual value : other value"); }
@Test public void testHasAttributeValueKoWhenAttributeIsMissing() { assertThatAssertionErrorIsThrownBy(() -> elementAssert.hasAttributeValue("attribute", "some value")) .hasMessage("The element does not have attribute attribute"); }