解决@Test注解在Maven工程的Test.class类中无法使用的问题

目录
  • @Test注解在Maven的Test.class类中无法使用
    • 异常背景
    • 异常信息
    • 异常分析
    • 解决方案
  • Maven工程找不到@Test
    • maven的scope范围如下
    • 依赖的传递

@Test注解在Maven的Test.class类中无法使用

异常背景

在一个maven的web工程里, 我想写一个简单的测试类,于是就创建了一个类Test.class

在这个类里写@Test注解方法, 发现无法导入包,手动import org.junit.Test;导入也是无效

异常信息

异常分析

我第一直觉是,pom.xml没有配置坐标,看看发现配置了

再重新构建下maven,发现还是不行

再重新创建一个其他测试类,发现可以正常使用

也就是说, 创建的测试类的名字不能使用Test , 可能原因我猜注解和类同名问题

解决方案

就是删除这个Test.class测试类, 换一个名字就可以了

Maven工程找不到@Test

今天在IDEA下搭建maven进行单元测试的时候,在非test文件下面,写了一个测试类,发现@Test注解找不到,但是发现根路径下是有junit的jar包的,比较郁闷,然后就去查看自己的代码,发现在maven依赖中,junit的scope是test,如图一所示,果断将测试类放在test文件下,问题迎刃而解。

当然,如果把scope改为compile,测试类不一定要放在test文件下,放在main文件下也可以。

图一

进一步观察可以发现,问题出现在maven依赖范围内,查阅资料发现

maven的scope范围如下

1.test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖

2.compile范围指的是编译范围有效,在编译和打包时都会讲依赖存储进去

3.provided依赖:在编译和测试范围有效,最后生成war时不会加入,例:servlet-api,如图二所示,因为servlet-api,tomcat等在web服务器已经存在,如果在打包会冲突

图二

4.runtime在运行时依赖,在编译的时候不依赖

默认的依赖范围是compile

由此进一步引申出test的传递依赖性,参考他人博客,如下:

依赖的传递

作用域是test的包不会传递到引用这个项目的其它项目,但如果不是test会传递依赖到其它项目。

如:项目A中有一个依赖包junit4.10,它的作用域是test

现在有一个项目B,引用项目A,如果项目B要使用junit4.10就必须自己重新定义依赖关系。【因为不会传递依赖,所以不会从项目A中得到】

但:如果作用域是其它的,不是test

那么项目B可以直接使用不用自己再定义一个依赖关系。【因为会从项目A中自动传递依赖,而得到】

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • idea 打包maven项目忽略test文件的操作

    直接用idea clean install 进行打包maven项目时,如果没有进行设置会把测试文件也打包进去. 想要忽略test文件 将Maven Projects中的 Skip Tests 勾选上就行了 补充:idea SVN 忽略文件夹classes.lib 在maven工程中,或生成classes文件夹和lib文件夹和target文件夹.它里面的内容的修改肯定要忽略掉的 如下图所示 1. 进入ignore匹配规则中 2. 编写lib文件夹忽略规则 以上为个人经验,希望能给大家一个参考,也希

  • 解决IDEA 2020.1版本 maven Test命令出现导包错误的问题

    idea的maven快捷面板中test可以正常运行,但不能直接在@Test注解的方法前点击运行 会出现各种找不到包的报错: 解决办法: 1.clean命令清除target文件夹 2.删掉根目录的xxx.iml.xxx.ipr.xxx.iws 3.File>Settings>Build,Execution,Deploment>Build Tools>Maven 给Work offline打上勾 或者在maven快捷面板上激活Toggle Offline Mode 4.右键项目>

  • Maven打包跳过测试的三种方法

    使用Maven打包的时候,可能会因为单元测试打包失败,这时候就需要跳过单元测试. Maven跳过单元测试有三种方法. 一.命令行方式跳过测试 我们可以用两种命令来跳过测试 mvn clean install -DskipTests mvn clean install -Dmaven.test.skip=true - DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下 - Dmaven.test.skip=true,不执行测试用

  • 解决@Test注解在Maven工程的Test.class类中无法使用的问题

    目录 @Test注解在Maven的Test.class类中无法使用 异常背景 异常信息 异常分析 解决方案 Maven工程找不到@Test maven的scope范围如下 依赖的传递 @Test注解在Maven的Test.class类中无法使用 异常背景 在一个maven的web工程里, 我想写一个简单的测试类,于是就创建了一个类Test.class 在这个类里写@Test注解方法, 发现无法导入包,手动import org.junit.Test;导入也是无效 异常信息 异常分析 我第一直觉是,

  • 分模块构建Maven工程的方法步骤

    分模块构建Maven工程Demo 1.分模块构建Maven分析 在企业项目开发过程中,由于项目规模庞大,业务复杂,参与的人员比较多,一般会通过合理的模块拆分将一个大型的项目拆分为N多个小模块,分别进行开发.而且拆分出的模块可以非常容易的被其他模块复用. 常见的拆分方式有两种: 第一种:按照业务模块进行拆分,每个模块拆分成一个maven工程,例如将一个项目分为用户模块.订单模块.购物车模块等,每个模块对应就是一个maven工程 第二种:按照层进行拆分,譬如持久层.业务层.表现层等,每个层对应就是一

  • Intellj Idea中的maven工程Java文件颜色不对,未被识别的解决

    问题: 打开一个新的maven工程,发现.Java文件是这样的: 其实是编辑器未识别成maven工程. 解决: 1.点击侧边栏Maven 2.选择导入工程的pox.xml文件 3.恢复正常 补充知识:idea项目在maven projects中显示灰色的解决办法 在使用idea的过程中,遇到其中一个maven模块变成灰色,如下所示: 造成这个的原因可能是忽略了maven模块,可以尝试如下解决方法:在idea中maven的setting中找到ignored files,看右边的面板中是否将变灰的m

  • IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)

    设置好自己的maven配置好环境变量之后启动IDEA如下配置 可以看到在哦诶之文件当中设置的本地仓库加载正确 但是在pom文件当中是指引入jar包的时候却是不能够使用的 如果完整写好引入 javax.servlet jsp-api 2.0 则会自动从中央仓库下载 但是当自己记不得仓库包路径时候 jsp-api 输入的jsp-api会报错未找到 groupId 和 version 无法自动提示填写 解决方案 将红圈内选项前面的复选框选中 结果 已经不再报错轻松导入依赖 到此这篇关于IDEA最新版2

  • Maven工程搭建spring boot+spring mvc+JPA的示例

    本文介绍了Maven工程搭建spring boot+spring mvc+JPA的示例,分享给大家,具体如下: 添加Spring boot支持,引入相关包: 1.maven工程,少不了pom.xml,spring boot的引入可参考官网: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

  • SpringMVC中解决@ResponseBody注解返回中文乱码问题

    昨天在做项目的时候用@ResponseBody注解,发现返回页面上的中文是乱码,解决过程也是让我很郁闷!!!特此记录一些.目前有下面几种解决方案: @RequestMapping的produces方法 第一种解决方案是使用@RequestMapping注解的produces方法.写法如下: 复制代码 代码如下: @RequestMapping(value = "testPersonalValidtor.do",produces = "application/json;char

  • 解决IDEA无法读取maven镜像,jar包下载失败的问题

    最近从公司私服下载jar包一直失败,之前的解决方法是手动下载项目,自己打包来解决的,最近忍无可忍,自己研究了o(╥﹏╥)o. 原因 idea现在的版本要求maven的镜像必须是https的,而之前的配置的镜像都是http的,所以镜像加载失败了,读取的是maven默认的仓库,所以下不下来. 我为什么要手贱升级,明明18年版的也可以用的o(╥﹏╥)o 解决 设置https库 国内的镜像基本都有https版本了(公司的就要公司自己配置了),设置一下 <!--阿里仓库--> <mirror>

  • IDEA创建Maven工程Servlet的详细教程

    IDEA创建Maven工程servlet Servlet(Servlet Applet),全称Java Servlert,用于开发动态web资源的技术.是用Java编写的服务器端程序,主要功能在于处理服务器请求. Tomcat:由Apache组织提供的一种Web服务器,提供对jsp和Servlet的支持.它是一种轻量级的javaWeb容器(服务器),也是当前应用最广的JavaWeb服务器(免费). jsp:(java server page),java提供的一门开发web网页的技术. web应用

  • maven工程中jar包瘦身的五种方法

    java项目中常用maven工具来进行工程管理,但经常遇到的一个问题是生成的jar包越来越大,编译一次工程越来越慢.怎么有效地去除冗余依赖,给jar包进行瘦身,是一项必备技能.下面介绍在maven工程中jar包瘦身五大法: 一.将环境中已包含的依赖包的scope设置为provided pom中依赖的部分包可能在你程序运行环境中已经包含,此时应该将依赖包的scope设置为provided.如protobuf包如在环境中已包含,则应设置为: <dependency> <groupId>

  • 在maven工程里运行java main方法

    在Maven工程里运行Java main方法 复制代码 代码如下: mvn compilemvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main"mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.args="arg0 arg1 arg2"

随机推荐