如下定义您的SpringBoot主类
当将@SpringBootApplication移到另一个包时,我在JUnit 5中苦苦挣扎。
我已经使用Maven和Eclipse设置了一个新的SpringBoot项目(2.2.1.RELEASE)(必须将其从“ Eclipse Photon”升级为支持SpringBoot-Release)>
我的包裹布局看起来像这样:
/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
持有@SpringBootApplication的类是:
@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”可以正常工作,并且可以通过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注释的静态,非私有,非最终,嵌套类。
我还发现:使用SpringBootContextLoader未为测试类[com.package.sample.appl1.dbaccess.SimpleTest]找到@ContextConfiguration或@ContextHierarchy。
所以我将@ContextConfiguration定义为“ SimpleTest”,然后它起作用了。但是我一点也不明白为什么@SpringBootApplication的移动确实会改变这种行为。
[再次尝试设置该项目,我最终遇到了“找不到测试运行器'JUnit 5'的测试”,并且也找不到任何原因。我从当前的方法重新开始,然后转到此处。并不要提供任何提示给我错误的线索-对于任何一个问题。
任何解释都将不胜感激。我已经尝试了很多小时才能在Internet上找到某些内容-但是我只发现了诸如“尝试”,“尝试”之类的建议,但对理解没有帮助。因此,任何帮助表示赞赏。
当将@SpringBootApplication移到另一个包时,我在JUnit 5中苦苦挣扎。我已经用Maven和Eclipse设置了一个新的SpringBoot项目(2.2.1.RELEASE)(必须从“ ...
如下定义您的SpringBoot主类
@SpringBootTest(classes = {StartSamples.class})
public class SimpleTest {
...
}
如下定义您的SpringBoot主类