解决Maven项目的Test.class类中无法使用@Test注解的问题

 2024-03-09 04:03:14  阅读 0

解决Maven项目的Test.class类中无法使用@Test注解的问题

springjunit测试_java编写junit测试类_junit找不到测试类

目录@Test注释不能在Maven的Test.class类中使用。 异常后台异常信息异常分析解决方案。 Maven项目找不到@的作用域scope。 传递以下依赖

Maven的Test.class类中不能使用@Test注解

异常背景

在一个maven web项目中,我想编写一个简单的测试类,所以我创建了一个类Test.class

我在这个类中写了@Test注解方法,发现无法导入包。 手动 org.junit.Test; 导入也无效。

异常信息

异常分析

我的第一直觉是 pom.xml 中没有配置坐标。 我看了一下,发现已经配置好了。

再次重建maven,发现还是不行。

然后重新创建另一个测试类,发现可以正常使用。

也就是说,创建的测试类的名称不能使用Test。 我猜可能的原因是注释和类具有相同的名称。

解决方案

只需删除这个Test.class测试类并更改其名称即可。

Maven项目找不到@Test

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

当然,如果将范围改为 ,则测试类不必放在测试文件下,也可以放在主文件下。

图1

进一步观察发现问题发生在maven依赖范围内。 经过查阅资料,我们发现

maven的范围如下

1、测试范围是指有效的测试范围,编译打包时不会用到这个依赖。

堆范围是指有效的编译范围,编译和打包过程中会存储依赖关系。

3.依赖:在编译和测试范围内有效,最终生成war时不会添加。 例如:-api,如图2所示,因为-api等已经存在于web服务器中,如果打包会冲突。

图二

4.运行时依赖,但编译时不依赖。

默认依赖范围是

这进一步扩展了测试的传递依赖。 参考了别人的博客,如下:

依赖关系的转换

作用域为 test 的包不会传递给引用该项目的其他项目,但如果不是 test,依赖关系就会传递给其他项目。

例如:项目A中有一个依赖包.10,其范围为test

现在有一个项目B,它引用了项目A。如果项目B想要使用.10,它必须自己重新定义依赖关系。 【因为依赖不会被传递,所以不会从A项目中获取]

但是:如果范围是其他的,则不测试

那么 B就可以直接使用,不需要自己定义依赖。 【因为依赖会自动从A项目中传递,获得】

以上是我的个人经验,希望可以给您参考,也希望您支持我们。

标签: 依赖 注解 传递

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码