mvn 安装独立加载期间依赖注入失败 运行

Dependency Injection failure during mvn install loading standalone run

我有一个使用 Spring MVC 创建的 RESTful 服务。我创建了一个集成测试来测试我的 Rest 控制器,使用 spring-test mvcmock。

当我使用 运行 作为 Junit 运行 进行此测试时。这是 运行宁罚款。 但是,当在 mvn install 期间使用 surefire 插件执行相同的测试时。此测试抱怨抛出致命错误:

No qualifying bean of type ...

当我检查以前的日志时,它说它加载了 0 个依赖项。 这是日志:

DEBUG XmlBeanDefinitionReader - Loaded 0 bean definitions from location pattern [classpath*:service-test-context.xml]

然而,我再次运行这个测试class作为Junit并且我可以看到"loaded 23 beans at the same log line."

问题:请问是什么问题?

注意: 这是多 Maven 模块应用程序,并且未注入另一个模块的依赖项。 当我以 Junit 身份 运行 进行此测试时,我遇到了同样的问题。然后我在 eclipse > build > project 中添加了依赖模块,问题在 运行 中作为 JUnit 得到了解决。现在在做 mvn install.

时遇到这个问题

您的 surefire 配置是否包含 includes 参数?

“指定应包含在测试中的测试(按模式)的元素列表。当未指定且未指定测试参数时,默认包含将是

<includes>
 <include>**/Test*.java</include>
 <include>**/*Test.java</include>
 <include>**/*TestCase.java</include>
</includes>

简单的解决方法是重命名您的测试 运行ner,使其以 Test.java 结尾。那么

mvn test

会捡起来的。

已更新

另一种选择是:

”测试: 按文件名将此参数指定为 运行 个单独的测试,覆盖 includes/excludes 参数。您在此处指定的每个模式都将用于创建格式为 **/${test}.java 的包含模式,因此您只需键入“-Dtest=MyTest”即可 运行 一个名为"foo/MyTest.java"。以 ! 为前缀的测试模式将被排除在外。 此参数覆盖 includes/excludes 参数和 TestNG suiteXmlFiles 参数。从 2.7.3 开始,您可以通过添加#myMethod 或#my*ethod 来在测试中执行有限数量的方法。例如,“-Dtest=MyTest#myMethod”。这支持 junit 4.x 和 testNg.

从 2.19 开始,一个参数支持复杂的语法(JUnit 4、JUnit 4.7+、TestNG): "-Dtest=???Test, !Unstable*, pkg/**/Ci*leTest.java, Test#testOne+testTwo??? ??, #fast*+slowTest" "-Dtest=Basic*, !%regex[..Unstable.], !%regex[..MyTest.class#one.|two.], %regex[#fast.|slow.*]"

Parameterized JUnit 运行ner 使用括号中的索引描述测试方法,因此非正则表达式方法模式将变为:#testMethod[]。如果使用 @Parameters(name="{index}: fib({0})={1}") 并选择索引,例如5 在模式中,非正则表达式方法模式将变为 #testMethod[5:].

Type: java.lang.String
Required: No
User Property: test

因此,如果您的测试 运行ner 被命名为 foo/MyVeryOwnRunner。java 您可以执行以下操作

mvn clean test -Dtest=MyVeryOwnRunner