sprintboot mvn多模块项目如何做junit单元测试

项目结构

sprintboot mvn多模块项目如何做junit单元测试_第1张图片

使用maven 多模块构建 springboot,

在wm-service层写junit测试运行时

如何写junit测试类自动生成?

  在需要做测试的类上,ctrl+shift+T弹出 create Test---》选择需要做测试的方法,确定后就会在test包下生成和待测试类同包结构的测试类

测试运行报错:

sprintboot mvn多模块项目如何做junit单元测试_第2张图片

 

 

LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/D:/placeMavenRepository/org/slf4j/slf4j-log4j12/1.7.26/slf4j-log4j12-1.7.26.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactory

首先,这个项目因为是多个模块的依赖,在不启动项目情况下就涉及到加载配置文件

如果是在controller模块里,写junit测试:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
@WebAppConfiguration
public class ArtistCtrlTest {
    private static Logger logger = LogManager.getLogger();
...

如果在service层写junit:  这里就没有springboot的启动类,要使用配置文件上下文

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ContentConfig.class})
@SpringBootTest
public class ArtistServiceImplTest {
    @Autowired
    private ArtistInfoMapper artistInfoMapper;
...

上面遇到的ApplictionContext加载失败,是因为依赖关系中slf4j中会去寻找slf4j-log4j作为日志对象,而sprignboot默认支持的是logback,。 所以要解决这个问题就需要移除其中一项,因为项目中的log文件使用的是logback,所以我想移除slf4j-log4j

项目中依赖的jar太多了,包括依赖间的传递,我使用mvn dependency:tree,虽然定位了这里但不知道是名字写错了,总是不生效。我想用idea的的依赖图来查看是哪个地方引入的,并使用右键--exclude自动工具排除,避免人为写错。

要使用maven依赖图生成,就要保证有以下3个插件,我开始时是看不到这个功能按钮的,即便安装了插件也没看到,不知道是后来重启idea,还是重启电脑后才可以看到的

今天突然发现,其实已经有了这个依赖图按钮,只是鼠标定位不同,它的显示与否也就不同了

如果选中的是模块名,就显示图标

sprintboot mvn多模块项目如何做junit单元测试_第3张图片

如果这里定位的是Profiles,那这个图标就不见了

sprintboot mvn多模块项目如何做junit单元测试_第4张图片

sprintboot mvn多模块项目如何做junit单元测试_第5张图片

sprintboot mvn多模块项目如何做junit单元测试_第6张图片

笨点可以直接看下面的dependency,虽然列出了很多,但是关系还是不明确

利用这个图,可以查看有哪些重复引入,有哪些冲突,当然这里的logback和slf4j-log4j并没有用红色标为冲突,只是springboot的一个默认处理

昨天耗费了几个小时,手动exclude,却怎么也不成功,今天试了下工具处理,果然成功了。总算坚持有了效果。有时候,只要再坚持一下下,再尝试一次,可能生活就会给你你想要的结果,所以,努力,遇到问题不要放弃,加油,你是最棒的!

简单总结一下:

1自动在test包下生成对应的测试类,ctrl+shift+T  不用非得安装什么插件

2 mvn 依赖图要好好利用(靠手工排除实在不是上上策)

3 工具好不好,也要看你会不会用。如果别人可以,你为什么就不可以!

你可能感兴趣的:(sprint-boot)