未在Spring Boot测试中合并的JAssert库

时间:2019-07-16 03:25:23

标签: java spring spring-boot

我正在使用教程中的代码测试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函数的调用?

2 个答案:

答案 0 :(得分:0)

我不是Eclipse专家,但看来您这里有一些配置问题。 如果您确定依赖项出现在范围test的pom.xml中,请尝试通过直接通过maven运行测试来消除与Eclipse有关的问题:

mvn test 

会做

如果成功运行,则从pom.xml重新创建eclipse配置/重新导入项目。 如果不是这样,则可能是与pom.xml相关的问题,并且与eclipse无关,您必须修复pom或maven生态系统。我建议以下内容:

  • 转到本地存储库,然后从文件系统(通常是整个目录,包括jar,pom.xml和所有内容)中删除依赖项,然后重新运行mvn test

有时依赖项被下载损坏,尽管在pom.xml中已正确定义,但它们实际上并不包含java / maven可以读取的形式的类

答案 1 :(得分:0)

实际上:

事实证明,Boot启动程序和IDE似乎都没有找到JAssert函数的必要导入声明。可能是因为它们是静态的吗?

在看一些示例代码时,我在代码中找到assertThat()方法的导入声明。通常,Eclipse会建议使用此声明,但事实并非如此。

奇怪的是,我手工输入了声明,这不仅使我可以编译,而且在包含导入的Eclipse中,代码助手可以毫无问题地提出正确的assertThat()建议!

某处可能有一个错误,但这超出了我的特定问题的范围。我的测试现在可以正常编译了。

我希望看到这个的人能弄清楚为什么Elipse的代码辅助不适用于该特定库。我发现在Spring Boot中还有其他对象/库没有被代码助手正确处理,我不会感到惊讶。