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
我有一个使用 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