我使用Maven,Java 10,Spring boot 2和Junit 5来创建我的单元测试应用程序。
主要应用类:
package mypackage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
private final static Logger LOGGER = LoggerFactory.getLogger(MyApplication.class);
public static void main(String[] args) {
LOGGER.info("I'am running...");
SpringApplication.run(MyApplication.class, args);
}
}
我的JUnit测试类:
package mypackage;
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.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes=MyTest.class)
public class MyTest {
private static final Logger LOGGER = LoggerFactory.getLogger(MyTest.class);
@Test
public void myTest() {
LOGGER.info("Message from test");
}
}
当我在Eclipse 4.10中导入我的maven项目时,我的测试类出错:
The package org.slf4j is accessible from more than one module: <unnamed>, slf4j.api
但mvn安装工作正常,maven-surefire-plugin运行正常。我做错了什么?或者它是日食的错误?也许Java 10,Junit和SLF4J没有合作?在我的module-info.java中:需要slf4j.api;
请帮我。
在ModulePath中添加外部jar时会发生这种情况。删除那些添加的外部jar并使用pom.xml添加依赖项
在Dependency Hierarchy下检查,slf4j库应该在一个依赖项下
我相信你已经将slf4j的jar添加到ModulePath:
转到项目 - >构建路径 - >配置构建路径 - >从Modulepath中删除Jars
需要从spring-boot项目中删除module-info.class。 spring-boot/#16031