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

时间:2016-04-03 22:25:19

标签: maven junit dependency-injection integration-testing maven-surefire-plugin

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

当我使用run as Junit运行此测试时。它运行正常。 但是,在mvn install期间执行相同的测试时,请使用surefire插件。这个测试抱怨投掷致命错误:

  

没有类型的限定bean ...

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

  

DEBUG XmlBeanDefinitionReader - 从位置模式加载0个bean定义[classpath *:service-test-context.xml]

然而,我再次将此测试类作为Junit运行,我可以看到"在相同的日志行中加载了23个bean。"

问题:请问您能提出什么问题?

注意: 这是多maven模块应用程序,并且没有注入另一个模块的依赖性。 当我以Junit的身份运行这个测试时,我遇到了同样的问题。然后我在eclipse中添加了依赖模块>构建>项目和问题在JUnit中运行时得到解决。现在在执行mvn install时遇到此问题。

1 个答案:

答案 0 :(得分:0)

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

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

var request = require("request"),
    fs = require("fs"),
    views = ['sitename1', 'sitename2', 'sitename3'...]
for (var view in views) {
    request({
        url: 'http://' + SERVERURL + '/api/2.2/sites/' + siteID + '/workbooks/' + views[view]['workbookID'] + '/views/' + views[view]['id'] + '/previewimage',
        headers: {
            'Content-Type': 'image/png',
            'X-Tableau-Auth': authToken
                }
            , encoding: 'binary'}).pipe(
                fs.createWriteStream('./public/images/thumbnails/' + SITE + '/views/' + views[view]['url'] + '.png'
            ))
        };

轻松修复是重命名您的测试运行器,使其以 Test.java 结束。然后

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

会捡起来。

<强>更新

另一种选择是:

“测试: 指定此参数以按文件名运行单个测试,覆盖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 = ???测试,!不稳定*,pkg / ** / Ci * leTest.java,测试#test 一个+ testTwo ?????,#fast * + slowTest” “-Dtest = Basic *,!%regex [。 .Unstable。],!%regex [。 .MyTest.class#one。 | two。] ,%正则表达式[#fast。 |慢。*]“

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

mvn test

因此,如果您的测试运行器名为 foo / MyVeryOwnRunner.java ,您可以执行以下操作

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