springboot junit5在重命名包含@springbootapplication注解的类的包时失败

roqulrg3  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(277)

当将@springboot应用程序移到另一个包时,我正在与junit5斗争。
我已经用maven和eclipse设置了一个新的springboot项目(2.2.1.release)(必须从“eclipse photon”升级它以支持springboot版本)
我的包布局如下所示:

/src/main/java
   com.package.sample.appl1
     StartSamples.java
   com.package.sample.appl1.start
   com.package.sample.appl1.dbaccess
   com.package.sample.appl1.run
   com.package.sample.appl1.utils
   com.package.sample.appl2.run
   com.package.sample.appl2.run

/src/test/java
   com.package.sample.appl1.dbaccess
     SimpleTest.java

保存@springboot应用程序的类是:

@ComponentScan({
    "com.package.sample"
    })
@SpringBootApplication
public class StartSamples {
   public static void main(String[] args) {
        System.out.println("Start");
        try {
            SpringApplication.run(StartSamples.class, args);
        } catch (Exception e) {
            LOGGER.error("", e);
            System.exit(-1);
        }
    }

测试是这样的:

import static org.junit.Assert.assertEquals;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.test.context.junit.jupiter.SpringExtension;

/**
 * Test the Query-statements and the DAO methods
 * 
 * @author U005078
 *
 */
@SpringBootTest
@ExtendWith(SpringExtension.class)
@ComponentScan({
    "com.package.sample"})
@EnableAutoConfiguration
public class SimpleTest {

    @SuppressWarnings("unused")
    private static final Logger LOGGER = LoggerFactory.getLogger(SimpleTest.class);

    @Test
    @DisplayName("SimpleTest")
    public void testTotalRows() {

在这种配置下,一切正常,“startsamples”按预期工作,aqlso是simpletest。
但当将“startsamples”移到另一个包(例如“com.package.sample.start”)时,我会觉得更有意义-“startsamples”仍然可以,但“simpletest”既不会失败也不会成功-测试似乎不会执行。我看到一条消息:类路径资源[com/package/sapmle/appl1/dbaccess/simpletest context.xml]不存在类路径资源[com/package/sapmle/appl1/dbaccess/simpletestcontext.groovy]不存在。simpletest]:simpletest不声明任何用@configuration注解的静态、非私有、非最终的嵌套类。
我还发现:对于测试类[com.package.sample.appl1.dbaccess.simpletest],使用springbootcontextloader既找不到@contextconfiguration也找不到@contexthierarchy
所以我将@contextconfiguration定义为“simpletest”,然后它就工作了。但我完全不明白为什么@springbootplication的移动会改变这种行为。
在设置这个项目的另一次尝试中,我最终得到了“没有在测试运行程序'junit5'中找到测试”,也找不到任何原因。我用当前的方法重新开始,并到达这里。无论哪一个问题,你都不知道是什么给了我错误。
任何解释都将不胜感激。我花了好几个小时在网上找东西,但我只找到了“试试这个”、“试试那个”之类的建议,但对理解没有帮助。所以任何帮助都是非常感谢的。

crcmnpdw

crcmnpdw1#

定义springboot主类如下

@SpringBootTest(classes = {StartSamples.class})
public class SimpleTest {
   ...
}

相关问题