我们在Eclipse中遇到导入问题:
测试类使用Assertions.assertThat
当按Ctrl + Shift + O组织导入时,Eclipse用StrictAssertions.assertThat替换Assertions.assertThat。
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
public class TheTest {
@Test
public void testName() {
assertThat(2).isEqualTo(2);
}
}
被替换为:
import static org.assertj.core.api.StrictAssertions.assertThat; // change here !
import org.junit.Test;
public class TheTest {
@Test
public void testName() {
assertThat(2).isEqualTo(2);
}
}
当我们有一些仅在断言中的特定断言时(对于列表),Eclipse将StrictAssertions添加到导入中。
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import org.junit.Test;
public class TheTest {
@Test
public void testName() {
assertThat(2).isEqualTo(2);
assertThat(new ArrayList<>()).isEmpty();
}
}
更改为:
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.StrictAssertions.assertThat; // this import was added
import java.util.ArrayList;
import org.junit.Test;
public class TheTest {
@Test
public void testName() {
assertThat(2).isEqualTo(2);
assertThat(new ArrayList<>()).isEmpty();
}
}
看来Assertions扩展了StrictAssertions,因此使用StrictAssertions没问题,但是为什么Eclipse不使用扩展类呢?
最佳答案
看起来,由于assertThat(int actual)
是在StrictAssertions
中定义的,并且未被Assertions
隐藏,因此Eclipse决定从StrictAssertions
导入。
另外,对于组织导入,Eclipse似乎忽略了类型过滤器-即便那样也无济于事。
断言似乎扩展了StrictAssertions,因此使用StrictAssertions没问题
不适用于您当前的设置,但是StrictAssertions
已被AssertJ 3.2.0删除。因此,升级到AssertJ
StrictAssertions
的较新版本时,您会遇到麻烦。
如果您的项目可以,我建议您升级到3.2.0或更高版本。