我正在使用JUnit和AssertJ来测试我的代码,这是测试:
printf()
Foo的代码如下:
public class FooTest {
@Test
public void test(){
Foo f = new Foo();
assertThatThrownBy(() -> f.abc(Collections.EMPTY_MAP)).isInstanceOf(RuntimeException.class)
.hasMessageContaining("test");
}
}
当我编译以上代码时,会引发错误,这表明javac在AbstractAssert中找不到符号public class Foo {
public void abc(Map<Integer, String> ss){
throw new RuntimeException("test");
}
}
,但是如果将hasMessageContaining
更改为Collections.EMPTY_MAP
,一切正常。
似乎new HashMap()
返回isInstanceOf
而不是AbstractAssert
。
而且,如果我将lambda更改为匿名类,上述错误也将消失。
那么,我的代码的问题在哪里?