我正在使用教程中的代码测试Spring Boot应用程序。本教程描述了Spring Boot应用程序的设置和配置,还描述了以以下方式使用JAssert
调用的测试:
package hello;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SmokeTest {
@Autowired
private HomeController controller;
@Test
public void contexLoads() throws Exception {
assertThat(controller).isNotNull();
}
}
不幸的是,该测试无法在我的IDE
中进行编译。 assertThat()
方法无法编译。
我将Eclipse和Maven一起用于我的IDE。我已经检查了Maven依赖项,并发现其中包含JAssert
核心库。不幸的是,尽管如此,编译器似乎无法“找到” assertThat()
调用。
由于该原因,它无法编译测试。
如何获得利用JAssert
的测试并找到对JAssert
函数的调用?
答案 0 :(得分:0)
我不是Eclipse专家,但看来您这里有一些配置问题。
如果您确定依赖项出现在范围test
的pom.xml中,请尝试通过直接通过maven运行测试来消除与Eclipse有关的问题:
mvn test
会做
如果成功运行,则从pom.xml重新创建eclipse配置/重新导入项目。 如果不是这样,则可能是与pom.xml相关的问题,并且与eclipse无关,您必须修复pom或maven生态系统。我建议以下内容:
mvn test
有时依赖项被下载损坏,尽管在pom.xml中已正确定义,但它们实际上并不包含java / maven可以读取的形式的类
答案 1 :(得分:0)
实际上:
事实证明,Boot启动程序和IDE似乎都没有找到JAssert函数的必要导入声明。可能是因为它们是静态的吗?
在看一些示例代码时,我在代码中找到assertThat()方法的导入声明。通常,Eclipse会建议使用此声明,但事实并非如此。
奇怪的是,我手工输入了声明,这不仅使我可以编译,而且在包含导入的Eclipse中,代码助手可以毫无问题地提出正确的assertThat()建议!
某处可能有一个错误,但这超出了我的特定问题的范围。我的测试现在可以正常编译了。
我希望看到这个的人能弄清楚为什么Elipse的代码辅助不适用于该特定库。我发现在Spring Boot中还有其他对象/库没有被代码助手正确处理,我不会感到惊讶。