当前位置: 首页 > 知识库问答 >
问题:

无法从JUnit测试文件中找到@SpringBootApplication

郭浩穰
2023-03-14

我在这里遵循指南,https://spring.io/guides/gs/spring-boot/克隆了项目,用Gradle构建,并试图运行...应用程序运行良好。然后我根据我的要求更改了一些文件结构,并试图运行那里给出的单元测试用例,但得到这个错误-

找不到@SpringBootConfiguration,您需要使用@ContextConfiguration或@SpringBootTest(类=…)通过你的测试

我只重组了代码,这是我目前的项目结构-

/projectroot
    - /src/main/java
          -Application.java
          -/controller
               -MyController.java
          -/util
               -MyUtil.java
          -/model
               -MyModel.java

现在尝试运行测试用例

/src/test/java/controller/MyControllerTest.java

我已经浏览了这个堆栈溢出链接,并理解如果我把我的测试文件夹放在 /src/main/java/它可能会工作。但是如果我这样做,测试文件就不会编译,而且它似乎也不是把应用程序代码和测试代码放在一起的正确方法。我知道我错过了一些非常基本的东西。

共有1个答案

单于皓轩
2023-03-14

您设置测试的方式(使用整个Spring Boot上下文),我相信MyControlllerTest.java最多需要与Application.java处于同一级别。此外,我注意到Application.java使用默认包,您应该将其移动到一个包中,这样您的所有bean都低于Spring Boot主类:

/projectroot
    - /src/main/java/com/example/project/
          -Application.java
          -/controller
               -MyController.java
          -/util
               -MyUtil.java
          -/model
               -MyModel.java
    - /src/test/java/com/example/project/
          -MyControllerTest.java

Spring的留档

如何从测试中解析Spring Boot的上下文:

搜索算法从包含测试的包开始,直到找到@SpringBootApplication或@SpringBootConfiguration注释类。只要你以一种合理的方式构造了你的代码,你的主配置通常都会被找到。

关于在Spring Boot中使用默认软件包:

当一个类不包含包声明时,它被认为是在“默认包”中。“默认包”的使用通常是不鼓励的,应该避免。对于使用@ComponentScan、@EntityScan或@SpringBootApplication注释的Spring Boot应用程序,这可能会导致特别的问题,因为每个jar中的每个类都将被读取。

我们建议您遵循Java推荐的包命名约定,并使用颠倒的域名(例如,com.example.project)。

 类似资料:
  • 问题内容: 摘要 我的JUnit测试找不到执行期间所需的文件。我正在使用Maven进行依赖项管理和编译。 细节 测试用例所需的所有文件都位于:中。 例如,。 要访问资源,请使用以下代码: 但随后返回。我得到的错误是: 注意,以下给出了相同的错误(请注意已删除的前缀): 好像的文件没有被复制到中。 有任何想法吗? 软件版本 Ubuntu 12.04 Apache Maven 2.2.1 Java 1

  • 有什么想法吗? 下面的问题没有帮助 为什么我不能在使用Maven的Junit测试运行中访问src/test/resources? (截断)Maven POM

  • 我在IntelliJ中打开了一个新的Java项目,用Maven作为构建工具,目前有一个类和一个JUnit5测试类。当我指示IntelliJ单独或一起运行测试时,它就可以工作了。但是当我转到终端并点击或从IntelliJ内的Maven窗格中执行相同操作时,它会跳过测试。 然而,与这个类似问题的提问者不同,我没有得到任何错误信息。测试类被找到并编译。我没有同样的问题(不正确的文件命名),他有。 它们是

  • 我想运行一个junit4测试套件,并在构建中使用过滤器指定它。gradle,但gradle(版本2.10)没有找到测试。有没有办法在gradle中运行指定的junit测试套件? 我的测试套件类 build.gradle

  • 所以我是JUnit的新手,我们必须用它来做家庭作业。我们的教授给了我们一个有一个测试类的项目。当我右键单击>Run as>JUnit Test,我会弹出一个错误,上面写着‘找不到JUnit tests’。我知道这里已经回答了这个问题(没有找到测试运行程序'JUnit4'的测试),但是关闭eclipse、重新启动、清理和构建似乎不起作用。下面是我的运行配置、构建路径和我试图测试的类的截图。

  • 我正在将旧的Jenkins构建迁移到新的声明性管道。现在我已经建立并运行了,我需要从git获取JenkinsFile(而不是将其留在Jenkins窗口中)。问题是Jenkins从Git获取文件,但在拉动后在错误的位置查找它。这是配置: 这是我在詹金斯日志中得到的信息: 似乎构建代理正在主Jenkins服务器机器上的某个位置寻找Jenkins文件。构建机器是windows机器,因此 /u03/jen