SpringBoot Junit 单元测试,提示:java.lang.Exception: No tests found matching

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot Junit 单元测试,提示:java.lang.Exception: No tests found matching相关的知识,希望对你有一定的参考价值。

今天进行SpringBoot 基于Junit单元测试,提示如下错误:

java.lang.Exception: No tests found matching [ExactMatcher:fDisplayName=myTest], ExactMatcher:fDisplayName=myTest], LeadingIdentifierMatcher:fClassName=MyTest,fLeadingIdentifier=myTest]] from org.junit.internal.requests.ClassRequest@66d1af89
	at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:80)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:71)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

测试代码片段和maven 相关依赖如下:

package com.zzg.test;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.sql.DataSource;

import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import cn.smallbun.screw.core.Configuration;
import cn.smallbun.screw.core.engine.EngineConfig;
import cn.smallbun.screw.core.engine.EngineFileType;
import cn.smallbun.screw.core.engine.EngineTemplateType;
import cn.smallbun.screw.core.execute.DocumentationExecute;
import cn.smallbun.screw.core.process.ProcessConfig;

@SpringBootTest
public class ScrewApplicationTests 
	

	    @Test
	   public void contextLoads() throws SQLException 
	    	// 数据源
	    	HikariConfig hikariConfig = new HikariConfig();
	        hikariConfig.setDriverClassName("dm.jdbc.driver.DmDriver");
	        hikariConfig.setJdbcUrl("jdbc:dm://192.168.0.1:5256/SYSDBA");
	        hikariConfig.setUsername("SYSDBA");
	        hikariConfig.setPassword("SYSDBA");
	        //设置能够获取tables remarks信息
	       
	        DataSource dataSource = new HikariDataSource(hikariConfig);
	       

	        // 生成文件配置
	        EngineConfig engineConfig = EngineConfig.builder()
	                // 生成文件路径。与官方的例子不同,我是win10系统,就先放E盘根目录吧。
	                .fileOutputDir("E://")
	                // 打开目录
	                .openOutputDir(false)
	                // 文件类型
	                .fileType(EngineFileType.html)
	                // 生成模板实现
	                .produceType(EngineTemplateType.freemarker).build();

	        // 生成文档配置(包含以下自定义版本号、描述等配置连接),文档名称拼接:数据库名_描述_版本.扩展名
	        Configuration config = Configuration.builder()
	                .version("1.0.3") // 版本
	                .description("数据库设计文档") // 描述
	                .dataSource(dataSource) // 数据源
	                .engineConfig(engineConfig) // 模板引擎配置
	                .produceConfig(getProcessConfig()) // 加载配置:想要生成的表、想要忽略的表
	                .build();
	        // 执行生成
	        new DocumentationExecute(config).execute();
	    
	    
	    /**
	     * 配置想要生成的表+ 配置想要忽略的表
	     *
	     * @return 生成表配置
	     */
	    public static ProcessConfig getProcessConfig() 
	        // 忽略表名
	        List<String> ignoreTableName = Arrays.asList();
	        // 忽略表前缀,如忽略a开头的数据库表
	        List<String> ignorePrefix = Arrays.asList();
	        // 忽略表后缀
	        List<String> ignoreSuffix = Arrays.asList();

	        return ProcessConfig.builder()
	                //根据名称指定表生成
	                .designatedTableName(new ArrayList<>())
	                //根据表前缀生成
	                .designatedTablePrefix(new ArrayList<>())
	                //根据表后缀生成
	                .designatedTableSuffix(new ArrayList<>())
	                //忽略表名
	                .ignoreTableName(ignoreTableName)
	                //忽略表前缀
	                .ignoreTablePrefix(ignorePrefix)
	                //忽略表后缀
	                .ignoreTableSuffix(ignoreSuffix).build();
	    


钉子数据库文档生成工具相关依赖:

        <!-- 自动生成数据库文档-->
		<dependency>
			<groupId>cn.smallbun.screw</groupId>
			<artifactId>screw-core</artifactId>
			<version>1.0.5</version>
		</dependency>
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.30</version>
		</dependency>
		<dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.4.5</version>
        </dependency>

问题排查步骤:

1、检查自己的编码没有任何错误或者相关依赖都正确引入。

2、检查测试类所在的包名,此src/test/java下的包名需要与src/main/java里边定义的包名一致。(我就是犯了这个错误)。

我在测试包的src/test/java 的包名为:com.zzg.test   而src/main/java 的包名为:com.zzg

直接修改测试包名,问题解决

以上是关于SpringBoot Junit 单元测试,提示:java.lang.Exception: No tests found matching的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot与单元测试JUnit的结合

SpringBoot与单元测试JUnit的结合

springboot2单元测试和指标监控

Springboot2_单元测试

SpringBoot:以最少的配置运行 Junit 单元测试

(15)SpringBoot使用Junit单元测试