Я использую JUnit и AssertJ для тестирования своего кода, и вот тест:
public class FooTest {
@Test
public void test(){
Foo f = new Foo();
assertThatThrownBy(() -> f.abc(Collections.EMPTY_MAP)).isInstanceOf(RuntimeException.class)
.hasMessageContaining("test");
}
}
код Foo выглядит следующим образом:
public class Foo {
public void abc(Map<Integer, String> ss){
throw new RuntimeException("test");
}
}
Когда я компилируюПриведенный выше код выдает ошибку, которая говорит, что javac не может найти символ hasMessageContaining
в AbstractAssert, но если я изменю Collections.EMPTY_MAP
на new HashMap()
, все работает нормально.
Кажется, что isInstanceOf
возвращает AbstractAssert
, а не AbstractThrowableAssert
.
И, если я изменю лямбду на анонимный класс, ошибка выше исчезнет либо.
Итак, в чем проблема моего кода?